J'ai un problème inhabituel. Considérons ces modèles (tirée de documents django):Ordre par défaut pour les articles m2m par champ de modèle intermédiaire dans 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)
Maintenant, disons que nous avons 2 membres des Beatles dans des bandes Beatles (suivant l'exemple django docs pour les modèles intermédiaires):
>>> beatles.members.all()
[<Person: Ringo Starr>, <Person: Paul McCartney>]
Le code ci-dessus renverra des membres triés par par défaut pour le modèle Personne. Si je spécifie:
>>> beatles.members.all().order_by('membership__date_joined')
les membres, sont triés par la date de jointure. Puis-je en quelque sorte définir ce comportement par défaut pour ce champ ManyToMany? Cela consiste à définir l'ordre par défaut des éléments connexes par champ dans le modèle intermédiaire? Le gestionnaire ManyRelatedManager semble avoir un argument init core_filters, mais je n'ai aucune idée précise de la façon d'y accéder avec le sous-classement de tout le champ m2m dans django. Des idées créatives? :)
Merci à l'avance :)
J'ai ouvert un ticket in django trac.
cette méthode retourne plus d'enregistrements que prévu pour moi. il finit par créer un OUTER LEFT JOIN et la duplication des données – MrE