我正在构建一个应用程序,使用Django 1.10作为后端,Angular 2 4.0作为前端。
是否可以从JSON数据对象创建和保存模型实例?
示例:此模型:
class PartOne(models.Model):
gender = models.SmallIntegerField(choices=[(1, "Male"), (2, "Female")])
gender_na = models.BooleanField(default=False)
height = models.SmallIntegerField()
height_na = models.BooleanField(default=False)
JSON:
json = {
'gender': 1,
'gender_na':False,
'height':195,
'height_na':False
}
我不想要手动创建模型:
PartOne.objects.create(gender=json['gender'], gender_na=json['gender_na'], height=json['height'], height_na=json['height_na]
我正在寻找一种自动化解决方案,如下所示:
PartOne.objects.create_from_json(json)
答案 0 :(得分:9)
你可以这么做,
PartOne.objects.create(**json)
通过构造关键字参数字典并将其传递给函数,可以在调用函数时使用** kwargs语法。
这是在section 4.7.4 of python tutorial.上的解包参数列表中记录的。
另请注意,相同的dict不会传递给函数。创建了一个新副本,因此" json"不是kwargs。
答案 1 :(得分:1)
如果您想对数据进行更多验证或对输入有更多控制权,您可能还需要查看modelform_factory
。你也可以做一些好事,比如附上文件。
from django.forms.models import modelform_factory
form = modelform_factory(PartOne, fields=('gender', 'gender_na', 'height', 'height_na',))
populated_form = form(data=my_json)
if populated_form.is_valid():
populated_form.save()
else:
# do something, maybe with populated_form.errors