2016-03-21 775 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