2010-09-10 85 views
20

我在django中有一个模型,我只想更新,也就是说,当我调用它并设置数据时,它不会创建新记录,只会更新现有的记录。我怎样才能做到这一点?以下是我有:如何更新模型中的字段而不在django中创建新记录?

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

回答

40

如果您从数据库中获取模型实例,则调用save方法将始终更新该实例。例如:

t = TemperatureData.objects.get(id=1) 
t.value = 999 # change field 
t.save() # this will update only 

如果你的目标是防止任何插入,那么你就可以,如果主键存在覆盖save方法,测试和产生异常。请参阅以下详细:

+0

如何更新ManyToMany关系字段? – Jay 2015-04-17 12:35:57

+1

是否还有其他解决方案?这看起来更像是“SELECT/UPDATE”而不是简单的“UPDATE” – Loic 2015-08-10 08:57:41

2

Django的大约有一些文件在其网站上,请参阅:Saving changes to objects。总结如下:

..要将更改保存到已存在于数据库中的对象,请使用save()

5

你应该做这种方式非常

t = TemperatureData.objects.get(id=1) 
t.value = 999 
t.save(['value']) 

这允许您指定的列应该保存和剩下一些,因为他们目前在数据库中。 (https://code.djangoproject.com/ticket/4102)!

相关问题