91 votes

Django model manager objects.create où se trouve la documentation?

J'ai toujours lu que je devrais utiliser

model = Model(a=5, b=6)
model.save()

Mais j'ai juste vu qu'il y est un gestionnaire de la fonction créer, parce que j'ai vu une opensource django app de l'utiliser.

model = Model.objects.create(a=5, b=6)
print model.pk
1

Donc, est-il suggéré de l'utiliser? Ou est-il toujours préféré utiliser l' .méthode de sauvegarde. Je suppose que les objets.créer vais essayer de créer n'importe quoi, alors que enregistrer peut enregistrer un objet existant si le pk est spécifié.

Ce sont les docs que j'ai trouvé: https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects

49voto

suhail Points 2520

Voir https://docs.djangoproject.com/en/1.4/ref/models/querysets/#create

Une méthode pratique pour la création d'un objet et d'enregistrer le tout dans un étape. Donc:

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 équivalentes.

Le force_insert signifie qu'un nouvel objet sera toujours créé. Normalement, vous n'aurez pas besoin de vous inquiéter à ce sujet. Toutefois, si votre modèle contient un manuel de clé primaire de la valeur que vous définissez et si cette valeur il existe déjà dans la base de données, un appel à créer() échoue avec un IntegrityError depuis des clés primaires doit être unique. Être prêt à gérer l'exception, si vous êtes de l'utilisation manuelle des clés primaires.

38voto

Daniel Roseman Points 199743

C'est dans la page "Référence à la méthode Queryset" , liée depuis l'index de la documentation.

1voto

gakhov Points 640

Fondamentalement, ces deux méthodes sont équivalentes . L'utilisation de Model.objects.create pourrait être préférée car elle est plus adaptée au style de Django.

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