0

我有以下两个模型:

class OrderItem(models.Model):
    order = models.ForeignKey(Order, related_name='items')
    title = models.ForeignKey(Title, related_name='order_items')

class OrderNotes(models.Model):
    order_item = models.ForeignKey('OrderItem', blank=True, null=True)
    timestamp = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

我将如何OrderItem按最近OrderNote的活动对 s 进行排序?

在伪代码中:

OrderItem.objects.order_by('ordernotes_set.order_by('is_active', '-timestamp'))

?

4

1 回答 1

0

我认为您可以使用注释来相当容易地处理这个问题。 https://docs.djangoproject.com/en/dev/topics/db/aggregation/#following-relationships-backwards

from django.db.models import Max
OrderItems.annotate(newest_note_time=Max('ordernotes__timestamp'))
    .order_by('-ordernotes__is_active', '-newest_note_time')
于 2013-03-15T23:58:33.600 回答