Tôi có một vấn đề bất thường. Chúng ta hãy xem xét mô hình như vậy (lấy từ tài liệu django):Đặt hàng mặc định cho các mặt hàng m2m bởi trường mô hình trung gian ở Django
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)
Bây giờ, chúng ta hãy nói rằng chúng ta đã có 2 thành viên Beatles trong ban nhạc Beatles ra (làm theo tấm gương trong tài liệu django cho các mô hình trung gian):
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
Mã trên sẽ trả lại các thành viên được sắp xếp theo đặt hàng mặc định cho mô hình Người. Nếu tôi chỉ định:
>>> beatles.members.all().order_by('membership__date_joined')
thành viên, được sắp xếp qua ngày tham gia. Tôi có thể bằng cách nào đó thiết lập điều này như là hành vi mặc định cho trường ManyToMany này? Đó là đặt thứ tự mặc định của các mục liên quan theo trường trong mô hình trung gian? Các ManyRelatedManager dường như có một đối số init core_filters, nhưng tôi không có ý tưởng mơ hồ làm thế nào để truy cập nó withous subclassing toàn bộ lĩnh vực m2m trong django. Bất kỳ ý tưởng sáng tạo nào? :)
Cảm ơn trước :)
tôi đã mở một ticket in django trac.
phương pháp này trả về nhiều hồ sơ hơn dự kiến cho tôi. nó kết thúc bằng việc tạo ra một OUTER LEFT JOIN và sao chép dữ liệu – MrE