Django 将 json 值保存到数据库/模型

新手上路,请多包涵

我是 django 的新手,我正在尝试将 json 保存到数据库 中。问题是我无法在我的视图中获取数据,但不确定 如何将其保存在数据库中。我正在尝试保存 评论

模型.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)

序列化器.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')

请帮我将数据从视图保存到数据库

查看.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

在此先感谢……..请让我知道是否有更好的方法……

原文由 Coeus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

如果我清楚地理解你的问题,那么你的观点应该是这样的。

 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')
        id = data.get('id')
        title = data.get('title')

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

原文由 burning 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用的是 Postgres,则可以使用 JSONField 存储 json( 阅读更多),但如果不是,则需要将 json 解析为字符串并使用 CharField / TextField 使用 json.dumps(data) 。要恢复数据,请使用 json 字符串来听写 json.loads(json_string)

记得导入 json 库: import json

原文由 Guilherme Iazzetta 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题