使用 Django Rest Framework 和默认用户卡住嵌套序列化程序
Stuck with nested serializer using Django Rest Framework and default user
pastebin 中描述了模型和序列化程序:
在我的数据库中,我有一个用户,该用户也有一个成员资料和一组附加的凭据。
现在...当我 运行 按原样尝试使用 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_sha256000$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')
谢谢 Linovia
默认情况下,DRF 将查看 User
模型上以序列化程序字段命名的属性(此处为 member
)。但是相关名称是 profile
.
这可以通过将 source="profile"
传递给您的 MemberProfileSerializer
来解决。
pastebin 中描述了模型和序列化程序:
在我的数据库中,我有一个用户,该用户也有一个成员资料和一组附加的凭据。
现在...当我 运行 按原样尝试使用 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_sha256000$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')
谢谢 Linovia
默认情况下,DRF 将查看 User
模型上以序列化程序字段命名的属性(此处为 member
)。但是相关名称是 profile
.
这可以通过将 source="profile"
传递给您的 MemberProfileSerializer
来解决。