2016-03-29 4 views
1

私はプロジェクトに取り組んでいます。フォームに入力された情報をjsonとしてデータベース列に格納する必要があります。フォームには独自のモデルはありませんが、その値はすべてjsonとして別のモデルの列に格納されます。ここではモデルです:DJANGO:データベース列に格納するためにjsonにフォーム値をシリアル化する方法

class Document(models.Model): 
    user = models.ForeignKey(User) 
    document = models.JSONField(default = {}) 
    category = models.CharField(max_length=255) 

今私は列documentに、異なる形態(異なるcategory S)からJSONデータを格納するために必要なのです。ここでは、このような形式のいずれかのカテゴリがある:

class InformalLetterForm(forms.Form): 
    sender_name = forms.CharField(max_length=45) 
    sender_address = forms.CharField(max_length=255) 
    date = forms.DateTimeField() 
    message_body = forms.CharField() 
    receiver_name = forms.CharField(max_length=255) 

私はJSONオブジェクトに、このようなフォームに入力されたデータは、データベースの列に格納されるようにシリアライズするにはどうすればよい(すなわち列の上document)。

私はオンラインで検索しましたが、モデルフォームからのデータに対してのみシリアル化が行われています。フォームから.claned_data属性を呼び出すことができます

答えて

0

任意の助け おかげで..それは、あなたがjson Pythonのライブラリーから.dumps()メソッドを呼び出すことができ、Pythonでフォームのデータを持つ辞書を返します。のは、ドキュメントからの例を見てみましょう:

>>> data = {'subject': 'hello', 
...   'message': 'Hi there', 
...   'sender': '[email protected]', 
...   'cc_myself': True} 
>>> f = ContactForm(data) 
>>> f.is_valid() 
True 
>>> f.cleaned_data 
{'cc_myself': True, 'message': 'Hi there', 'sender': '[email protected]', 'subject': 'hello'} 

ここでは、今のはそれJSON作ってみましょう、あなたのデータと辞書を持っている:

import json 

# An example simple dict 
d = {'a': 1, 'b': 2} 

json.dumps(d) 

# '{"a": 1, "b": 2}' 
関連する問題