使用一个或多个项创建Django对象(动态)
有没有办法使用使用一个或多个项创建Django对象(动态),django,dictionary,django-models,Django,Dictionary,Django Models,有没有办法使用model.objects.create() 假设我的模型有许多可选字段。我只想传递一个dict,而不是手动分配每个字段,如: Model.objects.create(thing=data['prop'],…) 这里有一个更清晰的(伪代码)示例:假设我有一个 class MyModel(models.Model): thing=models... // all these fields null=True, blank=True another=... possibl
model.objects.create()
假设我的模型有许多可选字段。我只想传递一个dict,而不是手动分配每个字段,如:
Model.objects.create(thing=data['prop'],…)
这里有一个更清晰的(伪代码)示例:假设我有一个
class MyModel(models.Model):
thing=models... // all these fields null=True, blank=True
another=...
possibly_another=...
...
data = {'thing': 'value for thing', 'another': 'value for another'}
MyModel.objects.create(data)
在本例中,我的数据
可能没有另一个或更多。我尝试过这样做,但我得到一个位置arg错误。。。我做了一些谷歌foo,我必须没有我的条款正确。(我更像是一个node/js家伙)
有没有一种方法可以传递dict并让create方法整理出有什么和没有什么?您可以使用两个连续的星号(**
)来执行字典解包:
MyModel.objects.create(**数据)
如果字典包含例如data={'a':4,'b':2}
,如果执行字典解包f(**data)
,它将使用f(a=4,b=2)
调用函数
请注意,对于缺少的值,在这些字段中应该有default=…
参数。这正是我需要知道的!谢谢你的知识伙伴,当然。已设置默认值。我会尽快记下你的答案。再次感谢。这正是我丢失的语言信息。
MyModel.objects.create(**data)