小编phi*_*her的帖子

为什么不能像这样更新 django 模型实例:instance(**update_dict)?

我可以创建一个新的 django 模型对象,Model(**dictionary)但如果我想以相同的方式更新一个实例,我发现只有update_or_create哪个有问题并且经常返回“重复 PK”错误。在模型对象上调用自定义辅助函数似乎也不是特别Pythonic。或者,您可以使用此模式:

 Model.objects.get(id=id).update(**dict)
Run Code Online (Sandbox Code Playgroud)

或者

model.__dict__.update(**dict)
model.save()
Run Code Online (Sandbox Code Playgroud)

后者感觉就像一个黑客,我读过几次,它不“应该”以这种方式完成。第一种方法需要查询调用,并且再次感觉不正确,因为模型实例可能已经实例化并且要更新它,我们需要再次向数据库发送查询?

我还读到“您可以使用表单来完成此操作” - 但并不总是用户在数据库中更新模型,我们可能会编写需要更新模型的各种函数。我想知道以下代码无法实现/是否有原因?模型对象不能以这种方式直接调用和更新是否有原因?

model_instance(**dict)
model_instance.save()
Run Code Online (Sandbox Code Playgroud)

python django model

4
推荐指数
1
解决办法
5363
查看次数

标签 统计

django ×1

model ×1

python ×1