2017-05-17 16 views
2

バックエンドとしてDjango 1.10、フロントエンドにAngular 2 4.0を使用してアプリをビルドしました。Django:JSONデータを使用してモデルを作成して保存する

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]

イムtのような解彼:

PartOne.objects.create_from_json(json)

+2

django-rest-frameworkとそのシリアライザ機能を調べる必要があります。 –

答えて

3

あなただけの関数を呼び出すときは、キーワード引数の辞書を構築し、あなたの関数に渡すことで** kwargsから構文を使用することができ、

PartOne.objects.create(**json) 

を行うことができます。

これは、section 4.7.4 of python tutorial.に記載されています。

また、同じdictは関数に渡されないことに注意してください。新しいコピーが作成されるので、 "json"はkwargsではありません。

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 
関連する問題