u = UserDetails.objects.create(first_name='jake',last_name='sullivan')
u.save()
UserDetails.objects.create()
and u.save()
both perform the same save()
function. What is the difference? Is there any extra check or benefit in using create()
vs save()
?
Similar questions:
The Django documentation says it is the same. It is just more convenient to make it on one line. You could make a save()
on one line too, but it would be more verbose and less readable -- it is clear you are creating a new object with the create()
method.
create(**kwargs)
A convenience method for creating an object and saving it all in one step. Thus:
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
and:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
are equivalent.
The
force_insert
parameter is documented elsewhere, but all it means is that a new object will always be created. Normally you won’t need to worry about this. However, if your model contains a manual primary key value that you set and if that value already exists in the database, a call tocreate()
will fail with anIntegrityError
since primary keys must be unique. Be prepared to handle the exception if you are using manual primary keys.