Tout d'abord, je sais comment résoudre le problème, j'essaie simplement de comprendre pourquoi cela se produit. Le message d'erreur:Modèles Django: Pourquoi le nom est-il en conflit?
users.profile: Reverse query name for field 'address' clashes with related field 'Address.profile'. Add a related_name a rgument to the definition for 'address'.
Et le code:
class Address(models.Model):
country = fields.CountryField(default='CA')
province = fields.CAProvinceField()
city = models.CharField(max_length=80)
postal_code = models.CharField(max_length=6)
street1 = models.CharField(max_length=80)
street2 = models.CharField(max_length=80, blank=True, null=True)
street3 = models.CharField(max_length=80, blank=True, null=True)
class Profile(Address):
user = models.ForeignKey(User, unique=True, related_name='profile')
primary_phone = models.CharField(max_length=20)
address = models.ForeignKey(Address, unique=True)
Si je comprends bien, cette ligne:
address = models.ForeignKey(Address, unique=True)
PROVOQUERONT un attribut à ajouter à la classe Address
avec le nom profile
. Que crée le autre "profil" nom?
Que faire si je n'ai pas besoin d'un nom inversé? Y a-t'il une manière de le désactiver? Les adresses sont utilisées pour une douzaine de choses, donc la plupart des relations inverses seront vides de toute façon.
Existe-t-il un moyen de copier les champs d'adresse dans le modèle plutôt que d'avoir une table distincte pour les adresses? Sans l'héritage Python (cela n'a pas de sens, et si un Model a 2 adresses, ça ne marche pas).
Je n'ai pas vu ça, merci! Syntaxe bizarre. – mpen
C'est certainement le bon moyen de le désactiver. – Exelian
provient de ce https://code.djangoproject.com/ticket/5537 –