Mam nietypowy problem. Rozważmy takie modele (podjęte od docs django):Domyślne zamówienie dla elementów m2m według pola modelu pośredniego w 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)
Teraz, powiedzmy, że mamy 2 Beatles członków OUT zespołu The Beatles (na przykładzie w docs Django dla modeli pośrednich):
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
Powyższy kod zwróci członków posortowanych według domyślnego zamówienia dla modelu osoby. Jeśli podam:
>>> beatles.members.all().order_by('membership__date_joined')
członków, są sortowane według daty połączenia. Czy mogę w jakiś sposób ustawić to zachowanie domyślne dla tego pola ManyToMany? To jest ustawienie domyślnej kolejności powiązanych elementów według pól w modelu pośrednim? Wydaje się, że ManyRelatedManager ma argument init core_filters, ale nie mam pojęcia, jak uzyskać do niego dostęp, podając podklasę całego pola m2m w django. Wszelkie kreatywne pomysły? :)
góry dzięki :)
Mam otworzył ticket in django trac.
ta metoda zwraca więcej rekordów niż oczekiwano dla mnie. kończy się tworzenie ZEWNĘTRZNEGO POŁĄCZENIA LEWEGO i duplikowanie danych – MrE