我有一個不尋常的問題。讓我們考慮這樣的模型(從Django文檔拍攝):Django中間模型字段的m2m項目默認排序
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
現在,讓我們說我們有2名披頭士成員走出披頭士樂隊(以下在Django文檔的中級車型爲例):
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
以上代碼將返回按排序的會員,默認排序爲Person模型。如果我指定:
>>> beatles.members.all().order_by('membership__date_joined')
的成員,通過組織成員加入日期排序。我可以以某種方式將此設置爲此ManyToMany字段的默認行爲?那就是在中間模型中按字段設置相關項目的默認順序? ManyRelatedManager似乎有一個初始化參數core_filters,但我沒有模糊的想法,如何在django中通過子類化整個m2m字段來訪問它。有創意嗎? :)提前:)
感謝我開了一個ticket in django trac。
此方法返回比我預期更多的記錄。它最終會創建一個OUTER LEFT JOIN並複製數據 – MrE 2017-05-17 19:23:27