python - def - diferencia entre objects.create() y object.save() en django orm
select where django (1)
u = UserDetails.objects.create(first_name=''jake'',last_name=''sullivan'')
u.save()
UserDetails.objects.create()
y u.save()
realizan la misma función de save()
. ¿Cuál es la diferencia? ¿Hay algún cheque adicional o beneficio en el uso de create()
vs save()
?
Preguntas similares:
- ¿Cuál es la mejor manera de crear un objeto modelo en Django?
- Django: diferencia entre guardar () y crear () desde la perspectiva de la transacción
La documentación de Django dice que es la misma . Es más conveniente hacerlo en una sola línea. También puede hacer un save()
en una línea, pero sería más detallado y menos legible. Está claro que está creando un nuevo objeto con el método create()
.
create(**kwargs)
Un método conveniente para crear un objeto y guardarlo todo en un solo paso. Así:
p = Person.objects.create(first_name="Bruce", last_name="Springsteen")
y:
p = Person(first_name="Bruce", last_name="Springsteen") p.save(force_insert=True)
son equivalentes
El parámetro
force_insert
está documentado en otra parte, pero todo lo que significa es que siempre se creará un nuevo objeto. Normalmente no tendrás que preocuparte por esto. Sin embargo, si su modelo contiene un valor de clave principal manual que estableció y si ese valor ya existe en la base de datos, una llamada acreate()
fallará con unIntegrityError
ya que las claves primarias deben ser únicas. Esté preparado para manejar la excepción si está usando claves primarias manuales.