Champs d'accès dans le modèle intermédiaire de Django
Je suis de la création d'une Personne de Groupe et d'Appartenance, comme décrit dans Django docs pour le modèle intermédiaire.
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)
Il est possible d'accéder à la Personne à partir d'un objet de Groupe avec:
>>>Group.members.name
N'Django crée une autre requête pour récupérer la Personne?
Puis-je accéder à la date_joined
domaine à partir d'un objet de Groupe?
La chose qui me confond, c'est que je m'attends à obtenir le nom de la Personne de terrain avec:
>>>Group.members.person.name
Ce qui se passe si une Personne a un champ " nom " et également le modèle intermédiaire ont un champ 'nom'.
source d'informationauteur pablo
Vous devez vous connecter pour publier un commentaire.
Les membres champ dans votre exemple, un ManyToManyField, c'est donc un moyen d'accéder à de nombreuses personnes plutôt qu'une seule personne.
L'objet qui se trouve sous le champ membres est en fait un type spécial de Manager, pas une Personne:
À mieux comprendre ce qu'est un Manager, voir la documentation.
Pour accéder à un nom de la personne que vous feriez par exemple:
Vous ne pouvez pas accéder aux champs dans votre modèle d'Adhésion via le Gestionnaire dans le champ membres. Pour accéder à tous les champs que vous feriez:
Et donc si vous aviez un champ appelé le nom de votre modèle d'Adhésion, vous devriez pouvoir y accéder comme ceci:
Un second moyen d'accès le nom d'une Personne serait:
Espère que cela vous aide un peu 🙂
Utiliser le gestionnaire de l'appartenance de classe:
au lieu de: