Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不在django中创建新记录的情况下更新模型中的字段?_Django_Django Models - Fatal编程技术网

如何在不在django中创建新记录的情况下更新模型中的字段?

如何在不在django中创建新记录的情况下更新模型中的字段?,django,django-models,Django,Django Models,我在django中有一个模型,我只想更新它,也就是说,当我调用它并设置数据时,它不会创建新记录,只更新现有记录。我该怎么做?以下是我所拥有的: class TemperatureData(models.Model): date = models.DateTimeField() value = models.PositiveIntegerField() alert = models.BooleanField() Django在其网站上有一些相关文档,请参

我在django中有一个模型,我只想更新它,也就是说,当我调用它并设置数据时,它不会创建新记录,只更新现有记录。我该怎么做?以下是我所拥有的:

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

Django在其网站上有一些相关文档,请参阅:。总结如下:

。。要保存对数据库中已有对象的更改,请使用
save()


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

t = TemperatureData.objects.get(id=1)
t.value = 999  # change field
t.save() # this will update only
如果您的目标是防止任何插入,那么您可以覆盖
save
方法,测试主键是否存在并引发异常。有关更多详细信息,请参见以下内容:


    • 理想情况下,你应该这样做

      t = TemperatureData.objects.get(id=1)
      t.value = 999
      t.save(['value'])
      
      这允许您指定应保存哪一列,其余列保持当前在数据库中的状态。
      ()!

      在我的场景中,我想根据他的id更新status的状态

      student_obj = StudentStatus.objects.get(student_id=101)
      student_obj.status= 'Enrolled'
      student_obj.save()
      
      或者,如果您想要学生信息表中的最后一个id,您可以使用以下代码

      student_obj = StudentStatus.objects.get(student_id=StudentInfo.objects.last().id)
      student_obj.status= 'Enrolled'
      student_obj.save()
      

      有时可能需要以原子方式执行更新,即使用对数据库的一个更新请求而不首先读取它

      另外,
      get
      -
      set attribute
      -
      save
      如果这些更新可以同时进行,或者如果您需要基于旧字段值设置新值,则可能会导致问题

      在这种情况下,与
      update
      一起使用可能有用:

      TemperatureData.objects.filter(id=1).update(value=F('value') + 1)
      

      难道没有别的解决办法吗?这看起来更像是“选择/更新”,而不是简单的“更新”。如何使用发送的新请求更新记录的所有字段。假设id为的记录被拉入一个表单,一个字段被更改,需要更新,我是否必须遍历每个字段以查看是否更改?我喜欢这个答案,但在当前版本中,您需要使用
      t.save(update_fields=['value'])
      to。这是最好的答案。例如,根据(搜索“更新”)