Django-fr

Forum

#1 25-05-2011 16:09:45

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

plusieurs foreign key

Bonjour
je loupe un truc dans la definition de mon model

j'ai un style avec plusieurs couleurs et une liste de couleur

j'ecrit donc dans mon model de style

couleur1 = models.ForeignKey(Color, blank=true null=true)
couleur2 = models.ForeignKey(Color, blank=true null=true)
couleur3 = models.ForeignKey(Color, blank=true null=true)

et ça ne passe pas
couleur1 = models.ForeignKey(Color, blank=true null=true)  passe bien donc
si quelqu'un a un avis sur ce que je ne fait pas bien ?

T.

Hors ligne

#2 25-05-2011 16:14:51

Olivier Girardot
Membre
Inscription : 08-04-2011
Messages : 14

Re : plusieurs foreign key

Bonjour,
je pense que tu vas avoir un flot de réponse, mais voilà ma petite
contribution :
http://code.djangoproject.com/ticket/217
<http://code.djangoproject.com/ticket/217>Il suffit donc d'utiliser un nom,
pour typer plus clairement ta relation,

Cordialement,

Olivier.

Le 25 mai 2011 17:09, Tonton <to.tonton _AT_ gmail.com> a écrit :

> Bonjour
> je loupe un truc dans la definition de mon model
>
> j'ai un style avec plusieurs couleurs et une liste de couleur
>
> j'ecrit donc dans mon model de style
>
> couleur1 = models.ForeignKey(Color, blank=true null=true)
> couleur2 = models.ForeignKey(Color, blank=true null=true)
> couleur3 = models.ForeignKey(Color, blank=true null=true)
>
> et ça ne passe pas
> couleur1 = models.ForeignKey(Color, blank=true null=true)  passe bien donc
> si quelqu'un a un avis sur ce que je ne fait pas bien ?
>
> T.
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#3 25-05-2011 16:15:19

Jean Boussier
Membre
Inscription : 11-09-2010
Messages : 13

Re : plusieurs foreign key

Le 25 mai 2011 à 17:09, Tonton a écrit :

> et ça ne passe pas

C'est vague comme description du problème ... Tu as quoi ? une syntax error ?

> couleur1 = models.ForeignKey(Color, blank=true null=true)  passe bien donc si quelqu'un a un avis sur ce que je ne fait pas bien ?

Déjà utilise True plutôt que true

Hors ligne

#4 25-05-2011 16:17:57

Mathieu AGOPIAN
Modérateur
Inscription : 11-08-2010
Messages : 35

Re : plusieurs foreign key

si tu fournissais le message d'erreur du "ça ne passe pas" ça aiderais wink De
plus, faire un copier coller de ton code au lieu de le réécrire (et d'y
inclure plein de fautes de syntaxe) serait plus judicieux.

J'imagine que tu as un message d'erreur te disant qu'il faut donner un nom à
tes FK, puisqu'elles sont plusieurs à pointer sur le même modèle. Tu peux
faire ça en spécifiant le "related_name" (nom que vas prendre la relation
inverse).

Exemple:

class Foo(models.Model):
    couleur1 = models.ForeignKey(Color, blank=True, null=True,
related_name='colors1')
    couleur2 = models.ForeignKey(Color, blank=True, null=True,
related_name='colors2')
    couleur3 = models.ForeignKey(Color, blank=True, null=True,
related_name='colors3')

Du coup, tu pourras faire par exemple :
color = Color.objects.get(foo='bar')
foos_ayant_couleur_1 = color.colors1.all()

Mathieu


Le 25 mai 2011 17:09, Tonton <to.tonton _AT_ gmail.com> a écrit :

> Bonjour
> je loupe un truc dans la definition de mon model
>
> j'ai un style avec plusieurs couleurs et une liste de couleur
>
> j'ecrit donc dans mon model de style
>
> couleur1 = models.ForeignKey(Color, blank=true null=true)
> couleur2 = models.ForeignKey(Color, blank=true null=true)
> couleur3 = models.ForeignKey(Color, blank=true null=true)
>
> et ça ne passe pas
> couleur1 = models.ForeignKey(Color, blank=true null=true)  passe bien donc
> si quelqu'un a un avis sur ce que je ne fait pas bien ?
>
> T.
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#5 25-05-2011 16:19:36

Yves Bourhis
Membre
Inscription : 18-01-2011
Messages : 26

Re : plusieurs foreign key

Bonjour,

Le 25/05/2011 17:09, Tonton a écrit :
> couleur1 = models.ForeignKey(Color, blank=true null=true)
> couleur2 = models.ForeignKey(Color, blank=true null=true)
> couleur3 = models.ForeignKey(Color, blank=true null=true)

En fait il faut lui indiquer des "noms" différents pour chacune des relations complémentaires ; quelque chose du genre :
couleur1 = models.ForeignKey(Color, verbose_name="Couleur 1")
couleur2 = models.ForeignKey(Color, related_name='color2',  verbose_name="Couleur 2")
couleur3 = models.ForeignKey(Color, related_name='color3',  verbose_name="Couleur 3")

Cordialement.

Hors ligne

#6 25-05-2011 16:20:41

Florian Strzelecki
Membre
Inscription : 11-08-2010
Messages : 40

Re : plusieurs foreign key

J'ajoute :
http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
Pour la documentation.

Il y a aussi :
http://docs.djangoproject.com/en/dev/topics/db/queries/#related-objects

Le 25 mai 2011 17:17, Mathieu AGOPIAN <mathieu.agopian _AT_ gmail.com> a écrit :

> si tu fournissais le message d'erreur du "ça ne passe pas" ça aiderais wink
> De plus, faire un copier coller de ton code au lieu de le réécrire (et d'y
> inclure plein de fautes de syntaxe) serait plus judicieux.
>
> J'imagine que tu as un message d'erreur te disant qu'il faut donner un nom
> à tes FK, puisqu'elles sont plusieurs à pointer sur le même modèle. Tu peux
> faire ça en spécifiant le "related_name" (nom que vas prendre la relation
> inverse).
>
> Exemple:
>
> class Foo(models.Model):
>     couleur1 = models.ForeignKey(Color, blank=True, null=True,
> related_name='colors1')
>     couleur2 = models.ForeignKey(Color, blank=True, null=True,
> related_name='colors2')
>     couleur3 = models.ForeignKey(Color, blank=True, null=True,
> related_name='colors3')
>
> Du coup, tu pourras faire par exemple :
> color = Color.objects.get(foo='bar')
> foos_ayant_couleur_1 = color.colors1.all()
>
> Mathieu
>
>
> Le 25 mai 2011 17:09, Tonton <to.tonton _AT_ gmail.com> a écrit :
>
>> Bonjour
>> je loupe un truc dans la definition de mon model
>>
>> j'ai un style avec plusieurs couleurs et une liste de couleur
>>
>> j'ecrit donc dans mon model de style
>>
>> couleur1 = models.ForeignKey(Color, blank=true null=true)
>> couleur2 = models.ForeignKey(Color, blank=true null=true)
>> couleur3 = models.ForeignKey(Color, blank=true null=true)
>>
>> et ça ne passe pas
>> couleur1 = models.ForeignKey(Color, blank=true null=true)  passe bien donc
>> si quelqu'un a un avis sur ce que je ne fait pas bien ?
>>
>> T.
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
>
> --
> ====================================
> Mathieu AGOPIAN
> +33 (0)6 14 56 96 41
> http://mathieu.agopian.info
> ====================================
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

Pied de page des forums