310 votes

Comment utiliser correctement get_or_create ?

J'essaie d'utiliser get_or_create pour certains champs de mes formulaires, mais je reçois une erreur 500 lorsque j'essaie de le faire.

L'une des lignes ressemble à ceci :

customer.source = Source.objects.get_or_create(name="Website")

L'erreur que je reçois pour le code ci-dessus est :

Cannot assign "(<Source: Website>, False)": "Customer.source" 
   must be a "Source" instance.

1voto

SHUBHAM JHA Points 1

La méthode get_or_create renvoie en fait un tuple.

L'astuce de la méthode get_or_create est qu'elle renvoie en fait un tuple de (object, created). Le premier élément est une instance du modèle que vous essayez de récupérer et le second est un indicateur booléen qui indique si l'instance a été créée ou non. True signifie que l'instance a été créée par la méthode get_or_create et False signifie qu'elle a été récupérée dans la base de données.

Donc vous pouvez faire quelque chose comme pour obtenir l'instance source

 ```   customer.source = Source.objects.get_or_create(name="Website")[0]
 ```

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X