query - ¿Cómo actualizar campos en un modelo sin crear un nuevo registro en django?
django queryset (3)
Deberías hacerlo de esta manera idealmente
t = TemperatureData.objects.get(id=1)
t.value = 999
t.save([''value''])
Esto le permite especificar qué columna se debe guardar y qué resto se deja como están actualmente en la base de datos. ( https://code.djangoproject.com/ticket/4102 )!
Tengo un modelo en django que quiero actualizar solo, es decir, cuando lo llamo y configuro los datos, no creará un nuevo registro, solo actualizará el existente. ¿Cómo puedo hacer esto? Esto es lo que tengo:
class TemperatureData(models.Model):
date = models.DateTimeField()
value = models.PositiveIntegerField()
alert = models.BooleanField()
Django tiene cierta documentación sobre eso en su sitio web, ver: Guardar cambios en los objetos . Para resumir:
.. para guardar los cambios en un objeto que ya está en la base de datos, use
save()
.
Si obtienes una instancia de modelo de la base de datos, entonces llamar al método de guardar siempre actualizará esa instancia. Por ejemplo:
t = TemperatureData.objects.get(id=1)
t.value = 999 # change field
t.save() # this will update only
Si su objetivo es evitar cualquier INSERT, puede anular el método de save
, probar si la clave principal existe y generar una excepción. Vea lo siguiente para más detalles: