代码之家  ›  专栏  ›  技术社区  ›  Ruben Quinones

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

  •  31
  • Ruben Quinones  · 技术社区  · 15 年前

    class TemperatureData(models.Model):   
        date = models.DateTimeField()   
        value = models.PositiveIntegerField()   
        alert = models.BooleanField()
    
    3 回复  |  直到 10 年前
        1
  •  128
  •   pawas kr. singh    8 年前

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

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

    如果您的目标是阻止任何插入,则可以重写 save 方法,测试主键是否存在并引发异常。详情请参见以下内容:

        2
  •  22
  •   Zaman Afzal    9 年前

    你最好这样做

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

    ( https://code.djangoproject.com/ticket/4102

        3
  •  8
  •   Roman-Stop RU aggression in UA    5 年前

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

    阿尔索 get set attribute - save

    在这种情况下 query expressions 一起 update

    TemperatureData.objects.filter(id=1).update(value=F('value') + 1)
    
        4
  •  3
  •   miku    15 年前

    Django在其网站上有一些相关文档,请参见: Saving changes to objects . 总结一下:

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

        5
  •  2
  •   Viraj Wadate    6 年前

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

    student_obj = StudentStatus.objects.get(student_id=101)
    student_obj.status= 'Enrolled'
    student_obj.save()
    

    或者如果你想从Student\ u Info表中得到最后一个id,你可以使用下面的方法。

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