gpt4 book ai didi

python - django-如何使用参数进行更新,我可以正常更新,例如先分配,然后 Model.save

转载 作者:行者123 更新时间:2023-12-01 06:01:05 25 4
gpt4 key购买 nike

这是我的保存代码:

keys={"key1","key2"}
mydict={key: value for (key, value) in data.items() if key in keys}
m=Modelname(**mydict)
m.save()

这里,data 就像一个键和值的数组。我不想保存全部,只想保存 keys 中可用的一些键。上面的保存工作正常并且很酷,但是如何更新它呢?资源相同,但操作现在已更新。我知道一种方法:

m=Modelname.objects.get(name="ramesh")
m.college = "some other name to update"
m.save()

现在它将使用新的大学名称进行更新。但是我怎样才能像使用 save 那样直接做到这一点呢?我指定的数据包含键以及要更新的值。

最佳答案

@San4ez 的建议是正确的。

请记住,即使您只想更改一列/字段,模型的 .save 方法也会将整行刷新/重写回数据库。

提供更好性能和并发性的另一种方法是使用查询集的 update 方法,该方法仅更新选定的列。

因此,假设“name”具有唯一约束(以便过滤器仅返回一个结果)。

Modelname.objects.filter(name="ramesh").update(**mydict)

目前正在做一些工作,以便 django 的 future 版本可以在 .save 方法上提供此功能。查看更多here

编辑:值得注意的是,如果您选择使用上述方法,django 不会发出任何后/前信号,并且通常模型的 .save 方法不会发出t 被调用,按照 django 的 documentation .

关于python - django-如何使用参数进行更新,我可以正常更新,例如先分配,然后 Model.save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com