Как обновить поля в модели без создания новой записи в django?
У меня есть модель в django, которую я хочу только обновить, то есть когда я ее вызываю и устанавливаю данные, она не создаст новую запись, а только обновит существующую. Как я могу это сделать? Вот что я имею:
class TemperatureData(models.Model):
date = models.DateTimeField()
value = models.PositiveIntegerField()
alert = models.BooleanField()
Ответы
Ответ 1
Если вы получаете экземпляр модели из базы данных, вызов метода сохранения всегда будет обновлять этот экземпляр. Например:
t = TemperatureData.objects.get(id=1)
t.value = 999 # change field
t.save() # this will update only
Если ваша цель предотвращает любые INSERT, вы можете переопределить метод save
, проверить, существует ли первичный ключ и создать исключение. Подробнее см. Ниже:
Ответ 2
Вы должны сделать это в идеале
t = TemperatureData.objects.get(id=1)
t.value = 999
t.save(['value'])
Это позволяет указать, какой столбец должен быть сохранен, а остальное осталось, так как они в настоящее время находятся в базе данных.
(https://code.djangoproject.com/ticket/4102)!
Ответ 3
В Django есть документация об этом на их веб-сайте: Сохранение изменений в объектах. Подводя итог:
.. для сохранения изменений в объекте, который уже находится в базе данных, используйте save()
.