Как аннотировать связанные объекты с помощью фильтра?
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
items = Item.objects.prefetch_related("docs").filter(user=request.user).annotate(date=Max("docs__uploaded_at")).order_by("-date")
Здесь я хочу упорядочить элементы queryset на основе поля документа uploaded_at
. У Item
может быть несколько или ни одного Document
, поэтому упорядочивайте элементы на основе последней даты документа с DOC
как doc_type
, а если у него нет ни одного, то оставляйте его последним.
NOTE: Я использую django 1.9