代码之家  ›  专栏  ›  技术社区  ›  Hide

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

  •  1
  • Hide  · 技术社区  · 7 年前

    我正在使用Django rest框架和MySQL。

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

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

    [评论]
    -条款编号(FK至条款)
    -用户密钥
    -注释

    我想将注释数据导入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')
    

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

    {
        "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框架实现吗?

    谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   neverwalkaloner    7 年前

    您需要更改 comment 字段来自 PrimaryKeyField commentSerializer 在…内 articleDetailSerializer :

    class articleDetailSerializer(serializers.ModelSerializer):
        ...
        comment = commentSerializer(many=True, read_only=True)
    
        class Meta:
            model = article
            fields = ('articleNo', 'userkey', 'content', 'likeCount', 'commentCount', 'comment')
    

    查看详细信息 here .