J'ai deux modèles dans mon projet Django:Dans Django, ne pouvez-vous pas utiliser une jointure de chaîne sur ManyToManyField? ManyToMany n'est-il pas juste une liste?
- match
- Joueur
match a une propriété ManyToMany pointant les joueurs, de sorte que plusieurs joueurs peuvent participer à un match. Je voudrais retourner un nom d'objet informatif dans l'admin Django, quelque chose comme "Richard Henry vs John Doe", en utilisant une jointure sur les noms complets des joueurs. Toutefois, les échecs suivants:
class Match(models.Model):
players = models.ManyToManyField(Player, verbose_name='Competitors')
def __unicode__(self):
return " vs ".join(self.players)
Les champs ManyToManyField ne sont-ils pas simplement des listes? Pourquoi je ne peux pas les rejoindre? Toute contribution est appréciée. Voici mon modèle de joueur, en cas de panne qui aide:
class Player(models.Model):
full_name = models.CharField(max_length=30)
def __unicode__(self):
return "%s" % self.full_name
Merci!
Édition: Je viens de découvrir que je peux utiliser self.players.list_display
pour que cela renvoie une liste. Je ne crache plus de traceback, mais pour une raison inconnue, le nom __unicode__
renvoie maintenant None
. Une idée de pourquoi cela serait?
Edit 2: code modifié:
class Match(models.Model):
players = models.ManyToManyField(Player, verbose_name='Competitors')
def __unicode__(self):
return " vs ".join(self.players.list_display)
S. Lott: vient de publier 'modifier 2'. – rmh