0
class Dog(models.Model):
name = models.CharField(max_length=255)
toys = models.ManyToManyField('toys.Toy', through='dogs.DogToy')
class DogToy(models.Model):
dog = models.ForeignKey('dogs.Dog')
toy = models.ForeignKey('toys.Toy')
sort_order = models.IntegerField()
class Meta:
unique_together = (
('dog', 'toy'),
('dog', 'sort_order'),
)
使用上面的例子,我想用關係的sort_order
列,因爲多個狗可能具有相同的玩具訂購dog.toys.all()
,所以我不能排序上Toy
的字段。查詢後我不能使用Pythonic排序,因爲我的狗有成千上萬的玩具,而且我需要使用分頁來表現。使用Django(或簡單的SQL) - 是否可以對`through`表中的字段對m2m關係進行排序?
已經有一些重複的問題和幾乎重複的問題已被回答錯誤(答案相當於只使用dog.toys.order_by('sort_order')
,這當然不起作用)。
hmmmm,不知道,但像dog.toys.all()ORDER_BY( 'dogtoy__sort_order')可以做的伎倆...... – Jingo
@Jingo。我認爲這是正確的做法。接受的答案將在初始查詢時觸及數據庫一次,然後再爲每個**'dogtoy.toy'_再次觸發數據庫。它可以通過在查詢中使用'.select_related('toy')'來緩解,但應該像您的建議那樣直接轉換爲簡單的東西。 – Izkata