2016-03-21 79 views
5

Im新的django和即時嘗試保存json到數據庫。問題是我能夠在我的視圖中獲取數據的數據,但不知道如何將它保存在數據庫中。我試着去挽救評論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,您可以用JSON JSONFieldread more)存儲,但如果沒有,你需要解析JSON字符串,並使用json.dumps(data)CharField保存。要恢復數據,使用JSON字符串json.loads(json_string)

與dict記得導入JSON lib目錄下:import json

相關問題