class Item(models.Model):
name = models.CharField(max_length=255)
user = models.ForeignKey(User)
class Document(models.Model):
doc_type = models.CharField(max_length=10, default="DOC")
item = models.ForeignKey(Item, related_name="docs")
uploaded_at = models.DateTimeField(auto_now_add=True)
@api_view(["GET"])
def get_items(request):
# docs__uploaded_at should be from objects having doc_type="DOC" only
# doc = Document.objects.filter(item=item, doc_type="DOC")
items = Item.objects.prefetch_related("docs").filter(user=request.user).order_by("docs__uploaded_at")
在这里,我想根据文档uploaded_at
字段(仅包含doc_type="DOC"
)对项目查询集进行排序。
2条答案
按热度按时间bhmjp9jg1#
您可以尝试如下操作。
w3nuxt5m2#
可以用
'DOC'
确定最新项目的uploaded_at
为doc_type
:因此,这里我们确定
docs
与doc_type='DOC'
的docs__uploaded_at
(最近的),并且在没有项的情况下(那么Max(…)
是NULL
),我们退回到created_at
字段。注意:django-1.9自April 2017起改为no longer supported [Django-doc],您应该考虑升级Django版本。