u = UserDetails.objects.create(first_name='jake',last_name='sullivan')
u.save()
UserDetails.objects.create()
et u.save()
exécutent toutes deux la même fonction save()
. Quelle est la différence? Y a-t-il un contrôle ou un avantage supplémentaire à utiliser create()
vs save()
?
Questions similaires:
- Quelle est la meilleure façon de créer un objet modèle dans Django?
- Django: différence entre save () et create () du point de vue des transactions
La documentation Django dit que c'est la même chose . Il est juste plus pratique de faire Vous pouvez également créer une save()
sur une seule ligne, mais ce serait plus détaillé et moins lisible - il est clair que vous créez un nouvel objet avec la fonction create()
méthode.
create(**kwargs)
Une méthode pratique pour créer un objet et l'enregistrer en une seule étape. Ainsi:
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
et:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
sont équivalents.
Le paramètre
force_insert
Est documenté ailleurs, mais cela signifie simplement qu'un nouvel objet sera toujours créé. Normalement, vous n'aurez pas à vous en préoccuper. Cependant, si votre modèle contient une valeur de clé primaire manuelle que vous définissez et si cette valeur existe déjà dans la base de données, un appel àcreate()
échouera avec unIntegrityError
car les clés primaires doivent être uniques . Soyez prêt à gérer l'exception si vous utilisez des clés primaires manuelles.