Django:使用 JSON 数据创建和保存模型
Posted
技术标签:
【中文标题】Django:使用 JSON 数据创建和保存模型【英文标题】:Django: Create and save a model using JSON data 【发布时间】:2017-10-16 18:08:52 【问题描述】:我正在构建一个应用程序,使用 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)
【问题讨论】:
您应该研究 django-rest-framework 及其序列化程序功能,这正是为此目的。 【参考方案1】:你可以这样做,
PartOne.objects.create(**json)
您可以在调用函数时使用 **kwargs 语法,方法是构建关键字参数字典并将其传递给您的函数。
这记录在 section 4.7.4 of python tutorial. 的解包参数列表下。
另外,请注意,相同的 dict 不会传递给函数。创建了一个新副本,因此“json”不是 kwargs。
【讨论】:
有没有办法相同但给出一个 json 对象列表而不是单个对象?[f(**item) for item in json_list]
,也许吧?
@zaidfazil 您可以遍历 Json 并单独保存。 for this_json in json: PartOne.objects.create(**this_json )
【参考方案2】:
如果您想对数据进行更多验证或对输入进行更多控制,您可能还想查看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
【讨论】:
以上是关于Django:使用 JSON 数据创建和保存模型的主要内容,如果未能解决你的问题,请参考以下文章