gpt4 book ai didi

Django 休息框架 - PrimaryKeyRelatedField

转载 作者:行者123 更新时间:2023-12-01 00:59:56 25 4
gpt4 key购买 nike

我正在关注 Django REST framework 教程,此时我在这里:
http://www.django-rest-framework.org/tutorial/4-authentication-and-permissions#adding-endpoints-for-our-user-models

我的 UserSerializer 代码如下所示:

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

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

我试图了解到底什么是 PrimaryKeyRelatedField。为此,我正在按如下方式更改代码并刷新 URL http://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
]
}
]
}

最佳答案

来自 Serializer Docs

The default ModelSerializer uses primary keys for relationships



如果您自己没有指定任何内容,则 PrimaryKeyRelatedField 将在后台使用,因此您的变体 2 是预期的输出。

希望这有帮助。

关于Django 休息框架 - PrimaryKeyRelatedField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24346701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com