如何在Django Db记录中设置多个字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Django Db记录中设置多个字段相关的知识,希望对你有一定的参考价值。

我想知道为现有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)

有这样的事情,还是我走错了路?

答案

我自己没有测试过,但你可以将一个dict传递给Queryset API中的.update()函数:https://docs.djangoproject.com/en/2.0/ref/models/querysets/#update

Foo.objects.get(pk=1).update(**data)

以上是关于如何在Django Db记录中设置多个字段的主要内容,如果未能解决你的问题,请参考以下文章

Django model中设置多个字段联合唯一约束

如何在 Django 表单输入字段中设置事件处理程序

如何在 Django 会话模型中设置自定义字段?

如何在 Intellij / DataGrip Mongo DB Shell 中设置显示 20 多个结果

在数据库中设置多个字段,仅从一个字段

如何在 Django 中设置 Django-Select2 小部件的初始值