【问题标题】:Stuck with nested serializer using Django Rest Framework and default user使用 Django Rest Framework 和默认用户卡在嵌套序列化程序中
【发布时间】:2015-09-02 00:43:57
【问题描述】:

模型和序列化器在 pastebin 中描述:

http://pastebin.com/ZxzxWY7V

在我的数据库中,我有一个用户,该用户也有一个成员资料和一组附加到它的凭据。

现在...当我按原样运行并尝试使用 AuthUserModelSerializer 拉用户时,我得到了成员和凭据,但 MemberProfile 没有通过!我不知道为什么。我不确定是不是因为 MemberProfile 是一对一的关系(尝试将其更改为外键进行测试),或者我的模型/序列化程序有问题。以下是来自 API 的示例响应:

HTTP 200 OK
Vary: Accept
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json

{
    "id": 1,
    "username": "eric",
    "password": "pbkdf2_sha256$20000$xA5jPJVAByjo$i/FpmosJgsppVH4o5ctryDppOyG1ZaB+tQ2VIa+jFX0=",
    "email": "",
    "first_name": "",
    "last_name": "",
    "is_staff": true,
    "is_active": true,
    "date_joined": "2015-06-17T00:10:24.514894Z",
    "credentials": [
        {
            "credential_type": "O",
            "credential_number": "23423423",
            "date_received": "2015-06-17T00:27:49.367446Z",
            "is_verified": true,
            "date_verified": "2015-06-17T00:27:46Z",
            "document_image": "http://127.0.0.1:8000/api/v1/members/images/credentials/e990868659524470aadb9996c68384ba.ext/logo11w.png"
        }
    ]
}

编辑: 修复是改变

class AuthUserModelSerializer(serializers.ModelSerializer):
    credentials = CredentialSerializer(many=True)
    member = MemberProfileSerializer(read_only=True)

class AuthUserModelSerializer(serializers.ModelSerializer):
    credentials = CredentialSerializer(many=True)
    member = MemberProfileSerializer(read_only=True, source='profile')

谢谢莉诺维亚

【问题讨论】:

    标签: django api rest django-rest-framework serialization


    【解决方案1】:

    默认情况下,DRF 将查看User 模型上以序列化器字段命名的属性(此处为member)。但是相关名称是profile

    这可以通过将source="profile" 传递给您的MemberProfileSerializer 来解决。

    【讨论】:

    • 非常感谢。对于任何想要澄清的人,我必须在我的嵌套序列化程序上添加该命令。现在在上面修复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2019-06-02
    • 2023-03-24
    • 2016-02-09
    • 2018-07-06
    • 1970-01-01
    相关资源
    最近更新 更多