0

次の2つのモデルがあります。

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最新のもので sを並べ替えるにはどうすればよいですか?OrderNote

pseudo_code では:

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 に答える