Je peux avoir un problème classique, mais je n'ai trouvé aucun extrait me permettant de le faire.django - Ordre récursif QuerySet par méthode
Je veux trier ce modèle par son nom complet.
class ProductType(models.Model):
parent = models.ForeignKey('self', related_name='child_set')
name = models.CharField(max_length=128)
def get_fullname(self):
if self.parent is None:
return self.name
return u'%s - %s' % (unicode(self.parent), self.name)
fullname = property(get_fullname)
J'ai essayé le tri par "parent", a obtenu erreur de boucle infinie. "parent__id" n'a pas bien trié.
Je ne pouvais pas comprendre comment utiliser annotate() pour concaténer des champs de chaîne.
J'ai ajouté un gestionnaire personnalisé avec trié(), mais il retourne un objet de liste et empêche mon forms.ModelChoiceField travailler.
est ici le genre
def all(self):
return sorted(super(ProductTypeManager, self), key=lambda o: o.fullname)
Qu'y at-il dans la jungle djangonic? Merci pour votre aide.
Il se comporte étrangement, comme order_by ('parent__id') l'a fait. – leplatrem
Que signifie «se comporte étrangement», précisément? Pourriez-vous mettre à jour votre question avec la chose spécifique qu'elle fait mal? –
Je voulais dire, il ne trient pas bien: http://pastebin.com/m3af438ac Il est connu pour être incohérent: http://code.djangoproject.com/ticket/7101#comment:1 – leplatrem