我知道在 Django 中使用 MyModel.objects.create 时,可以传入一个字典,其中的键对应于 MyModel 中的模型字段。这在另一个问题中得到了解释:可以在创建时将字典传递给 django 模型吗? https://stackoverflow.com/questions/1571570/can-a-dictionary-be-passed-to-django-models-on-create
但是,我试图传入一个字典,该字典的键数量多于模型字段的数量 - 换句话说,某些键在创建对象时未使用。是否可以通过某种方式做到这一点?例如:
data_dict = {
'key1': value1,
'key2': value2,
'key3': value3,
}
class MyModel(models.Model):
key1 = models.SomeField()
key2 = models.SomeField()
m = MyModel.objects.create(**data_dict)
当我尝试这样做时,我收到一条错误消息,告诉我“‘key3’是该函数的无效关键字参数”。我是否错误地传递了字典?是否有不同的方法将其传递给模型,这意味着模型不必使用所有参数?或者我只需像这样手动指定每个字段:
m = MyModel.objects.create(
key1 = data_dict['key1'],
key2 = data_dict['key2'],
)
您可以过滤,然后以这种方式传递字典:
MyModel.objects.create(**{key: value for key, value in data_dict.iteritems() if key in MyModel._meta.get_all_field_names()})
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)