我想知道为现有Django模型对象的多个字段设置值的最佳方法。我有一个包含许多领域的模型:
class Foo(models.Model):
Field1 = models.CharField(max_length=40)
Field2 = models.CharField(max_length=40)
Field3 = models.CharField(max_length=40)
etc...
此外,我还有字典,其中包含对特定记录的这些字段的子集的更改:
data = {'field1': 'value1', 'field5': 'value5', 'field7': 'value7'}
record = Foo.objects.get(pk=1)
我想在record
中使用data
中的新值设置字段。最好的方法是什么?有没有办法解压缩字典并让它修改记录中的相应字段?我意识到我可以使用以下方法迭代字典:
for k, v in data.iteritems():
setattr(entry, k, v)
entry.save()
我在想可能有办法打电话:
entry.set_values(**data)
有这样的事情,还是我走错了路?
答案 0 :(得分:5)
我自己没有对此进行测试,但你可以将一个dict传递给Queryset API中的.update()函数:https://docs.djangoproject.com/en/2.0/ref/models/querysets/#update
Foo.objects.get(pk=1).update(**data)