gpt4 book ai didi

django - 如何更新 Django 模型实例的多个字段?

转载 作者:行者123 更新时间:2023-11-28 19:33:34 25 4
gpt4 key购买 nike

我想知道,在 Django 中更新模型实例的多个字段的标准方法是什么? ...如果我有一个包含某些字段的模型,

Class foomodel(models.Model):
field1 = models.CharField(max_length=10)
field2 = models.CharField(max_length=10)
field3 = models.CharField(max_length=10)
...

... 我用给定的一个字段实例化它,然后在一个单独的步骤中我想提供其余字段,我如何通过传递字典或键值参数来做到这一点?可能吗?

换句话说,假设我有一个字典,其中包含一些数据,其中包含我想要写入该模型实例的所有内容。模型实例已在单独的步骤中实例化,假设它尚未持久化。我可以为每个字段说 foo_instance.field1 = my_data_dict['field1'],但有些东西告诉我应该有一种方法可以调用模型实例上的方法,我只需传递所有字段 -值对并更新它们。类似于 foo_instance.update(my_data_dict)。我没有看到任何像这样的内置方法,我是不是错过了它,或者这是如何有效地完成的?

我觉得这是一个显而易见的 RTM 类问题,但我只是没有在文档中看到它。

最佳答案

很容易弄乱 __dict__,但这不适用于从父类继承的属性。

您可以遍历字典以分配给对象:

for (key, value) in my_data_dict.items():
setattr(obj, key, value)
obj.save()

或者您可以直接从查询集中修改它(确保您的查询集只返回您感兴趣的对象):

FooModel.objects.filter(whatever="anything").update(**my_data_dict)

关于django - 如何更新 Django 模型实例的多个字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1576664/

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