Подтвердить что ты не робот

Как обновить поля в модели без создания новой записи в django?

У меня есть модель в django, которую я хочу только обновить, то есть когда я ее вызываю и устанавливаю данные, она не создаст новую запись, а только обновит существующую. Как я могу это сделать? Вот что я имею:

class TemperatureData(models.Model):   
    date = models.DateTimeField()   
    value = models.PositiveIntegerField()   
    alert = models.BooleanField()
4b9b3361

Ответ 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().