繁体   English   中英

Django restframework从另一个表导入数据?

[英]Django restframework import data from another table?

我将Django rest框架与MySQL结合使用。

让我解释一下我的两张桌子。

[文章]
-articleNo(主键)
-内容

[评论]
-articleNo(从FK到article)
- 用户密钥
-评论

我想将评论数据导入artice表。

class articleDetailSerializer(serializers.ModelSerializer):
    userkey = userSerializer(read_only=True)
    likeCount = serializers.IntegerField(source='like_set.count', read_only=True)
    commentCount = serializers.IntegerField(source='comment_set.count', read_only=True)
    comment = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = article
        fields = ('articleNo', 'userkey', 'content', 'likeCount', 'commentCount', 'comment')

class commentSerializer(serializers.ModelSerializer):
    class Meta:
         model = comment
         fields = ('articleNo', 'content', 'userkey')

当我访问/ article时,当前输出为:

{
    "articleNo": 26,
    "userkey": {
        "userkey": "121212",
        "username": "Da"
    },
    "content": "test",
    "likeCount": 3,
    "comment": [
        1,
        2,
        3
    ]
},

我想将其输出为:

{
    "articleNo": 26,
    "userkey": {
        "userkey": "121212",
        "username": "Da"
    },
    "content": "test",
    "likeCount": 3,
    "comment": [
        {
            articleNo: 26,
            userkey: "12345",
            content: "first comment"
        },
        {
            articleNo: 26,
            userkey: "23456",
            content: "second comment"
        },
        {
            articleNo: 26,
            userkey: "33333",
            content: "third comment"
        },
    ]
},

可以用Rest框架实现吗?

谢谢。

您需要在commentSerializer内将comment字段的类型从PrimaryKeyField更改为articleDetailSerializer

class articleDetailSerializer(serializers.ModelSerializer):
    ...
    comment = commentSerializer(many=True, read_only=True)

    class Meta:
        model = article
        fields = ('articleNo', 'userkey', 'content', 'likeCount', 'commentCount', 'comment')

在这里查看详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM