Django rest框架-PrimaryKeyRelatedField

dowjones123

我正在关注Django REST框架教程,并且目前在这里:http : //www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-endpoints-for-our-user -楷模

我的UserSerializer代码如下所示:

class UserSerializer(serializers.ModelSerializer):
    snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

    class Meta:
        model = User
        fields = ('id', 'username', 'snippets')

我试图确切地了解什么是PrimaryKeyRelatedField。为此,我正在按照以下方式更改代码并刷新URLhttp://127.0.0.1:8000/users/以查看不同的输出

变体1

snippets = serializers.RelatedField(many=True, read_only=True)


{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "id": 1, 
            "username": "som", 
            "snippets": [
                "Snippet title = hello", 
                "Snippet title = New2"
            ]
        }
    ]
}

这将打印出代码__unicode__()值。我期望这个

变体2-使用PrimaryKeyRelatedField

snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)


{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "id": 1, 
            "username": "som", 
            "snippets": [
                1, 
                2
            ]
        }
    ]
}

这会打印出两个片段的主键ID-我不明白

变体3-注释掉也会产生

#snippets = serializers.PrimaryKeyRelatedField(many=True, read_only=True)

{
    "count": 1, 
    "next": null, 
    "previous": null, 
    "results": [
        {
            "id": 1, 
            "username": "som", 
            "snippets": [
                1, 
                2
            ]
        }
    ]
}
卡尔顿吉布森

序列化器文档

默认的ModelSerializer使用主键建立关系

如果您未指定任何内容PrimaryKeyRelatedField,那么您将自己在引擎盖下使用,因此您的版本2是预期的输出。

希望有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django rest框架-PrimaryKeyRelatedField

来自分类Dev

Django rest 框架为 PrimaryKeyRelatedField 获取或创建

来自分类Dev

Django Rest Framework中的“ AttributeError”和PrimaryKeyRelatedField

来自分类Dev

在 Django Rest Framework 中更新嵌套的 PrimaryKeyRelatedField

来自分类Dev

为什么我无法将Django REST框架PrimaryKeyRelatedField修补为空列表?

来自分类Dev

Django Rest Framework使用PrimaryKeyRelatedField返回嵌套对象

来自分类Dev

您可以在django-rest-framework中重命名PrimaryKeyRelatedField吗

来自分类Dev

Django-REST序列化器:Queryset不过滤PrimaryKeyRelatedField结果

来自分类Dev

Django REST Framework 序列化程序 PrimaryKeyRelatedField() 未在 GET 响应中添加对象

来自分类Dev

Django Rest框架表格

来自分类Dev

Django Rest框架关系

来自分类Dev

Django Rest框架assertionError

来自分类Dev

Django rest框架ModelSerializer

来自分类Dev

Django Rest框架表格

来自分类Dev

Django Rest 框架 - NoReverseMatch

来自分类Dev

Django Rest 框架:MultipleObjectsReturned

来自分类Dev

Django REST框架+ Django REST Swagger + ImageField

来自分类Dev

在REST框架中使用Django消息框架

来自分类Dev

调整Django Rest框架模板

来自分类Dev

django rest框架用户注册

来自分类Dev

Django REST框架Swagger 2.0

来自分类Dev

调整Django Rest框架模板

来自分类Dev

Django REST框架的通用ModelSerializer

来自分类Dev

在Django Rest框架中过滤

来自分类Dev

Django Rest框架中的IntegrityError

来自分类Dev

发布请求Django REST框架

来自分类Dev

Django Rest框架:Pickle响应

来自分类Dev

在Django Rest框架中过滤

来自分类Dev

Django rest框架用户注册?