2016-03-21 13 views
5

私はdjangoとimに新しく保存しようとしていますjson toデータベース。問題は、私のビューでデータを取得することができますが、確信が持てないことですデータベースに保存する方法コメントDjangoはデータベース/モデルにjson値を保存します

models.py

class Post(models.Model): 
    title=models.CharField(max_length=200) 
    description=models.TextField(max_length=10000) 
    pub_date=models.DateTimeField(auto_now_add=True) 
    slug = models.SlugField(max_length=40, unique=True) 

    def __unicode__(self): 
     return self.title 


class Comment(models.Model): 
    title=models.ForeignKey(Post) 
    comments=models.CharField(max_length=200) 

    def __unicode__(self): 
     return '%s' % (self.title) 

serializer.py

class CommentSerializer(serializers.ModelSerializer): 
    id = serializers.CharField(source="title.id", read_only=True) 
    title = serializers.CharField(source="title.title", read_only=True) 

class Meta: 
    model = Comment 
    fields = ('id','title','comments') 


class PostSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Post 
     fields = ('id','title','description','pub_date') 

を保存しようとイム私はデータベース

view.py

にビューからのデータを保存する助けてください
def add_comments(request): 
    if 'application/x-www-form-urlencoded' in request.META['CONTENT_TYPE']: 
     print 'hi' 
     data = json.loads(request.body) 
     comment = data.get('comment', None) 
     id = data.get('id', None) 
     title = data.get('title', None) 
     ....................# not sure how to save to database 
     pass 

事前のおかげで........私ははっきりとあなたの質問を理解していれば、その後 あなたのビューのようなものでなければなりません

答えて

1

...それを行うための任意のより良い方法がある場合は私に知らせてください。

def add_comments(request): 
    if 'application/x-www-form-urlencoded' in request.META['CONTENT_TYPE']: 
     print 'hi' 
     data = json.loads(request.body) 
     comment = data.get('comment', None) 
     id = data.get('id', None) 
     title = data.get('title', None) 

     post = Post.objects.get(id = id) 
     com = Comment() 
     com. comments = comment 
     com.title = post 
     com.save() 
+0

感謝を...はいこれは必須です.........個別にデータを追加するのではなく、データを保存する方がいいですか? – Coeus

2

あなたはPostgresのを使用している場合は、JSONFieldread more)とJSON保存することができますが、ない場合は、文字列にJSONを解析し、CharFieldjson.dumps(data)を使用して保存する必要があります。リカバリデータを、json.loads(json_string)

とのdictするJSON文字列を使用したJSONのlibをインポートすることを忘れないでください:import json