39 votes

Get_or_create () doit-il sauvegarder immédiatement? (Django)

J'ai besoin d'utiliser quelque chose comme get_or_create() mais le problème est que j'ai beaucoup de domaines, et je ne veux pas définir les valeurs par défaut (qui ne font pas de sens de toute façon), et si je n'ai pas définir les valeurs par défaut, il renvoie une erreur, car il permet d'économiser de l'objet tout de suite apparemment.

Je peux définir les champs à null=True, mais je ne veux pas des champs null.

Est-il une autre méthode ou tout autre paramètre supplémentaire qui peut être envoyé à get_or_create() de sorte qu'il instancie un objet, mais ne le sauve pas jusqu'à ce que j'ai appeler la méthode save() sur celui-ci?

Merci.

39voto

Noah Medling Points 2743

Vous pouvez juste faire:

 try:
    obj = Model.objects.get(**kwargs)
except Model.DoesNotExist:
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k))
 

ce qui est à peu près ce que get_or_create fait, sans commettre.

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