Django:使用JSON数据创建和保存模型

时间:2017-05-17 10:21:54

标签: json django django-models

我正在构建一个应用程序,使用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)

2 个答案:

答案 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