在我的Django应用程序(Django 3.2.5,Python 3.9.6(中停止工作的东西有点疯狂-这里有一个简化版本:
class MyModel(models.Model):
attribute_1 = models.CharField(max_length=1, default='0')
myModel = MyModel()
myModel.save()
print(myModel.attribute_1) # OUTPUTS '0'
myModel.attribute_1 = '1' # EDITED MY TYPO HERE...
myModel.save()
print(myModel.attribute_1) # OUTPUTS '1'
第二个save()
没有被保存,如果我从其他地方的数据库中检索myModel
,我得到的attribute_1
等于0
。
然而,这确实如我所期望的那样起作用:
myModel = MyModel()
myModel.save()
MyModel.filter(pk=myModel.pk).update(attribute_1='1')
我是不是错过了一些非常明显的东西?
要设置模型实例的属性,需要为要更改的属性(字段(分配一个新值;
# instead of
myModel(attribute_1='1')
# you'd do
myModel.attribute_1 = '1'
myModel.save()
# You could also use a more efficient save
myModel.save(update_fields=['attribute_1'])
如果您正在修改这样的对象,您可能还需要使用refresh_from_db()
从数据库中获取最新版本
myModel.refresh_from_db()