模式为:
class Userinfo(models.Model):
class Meta:
verbose_name='用户信息'
verbose_name_plural='用户信息'
user=models.OneToOneField(
User,
related_name='userinfo',
on_delete=models.CASCADE,
verbose_name='用户'
)
location=models.BooleanField(verbose_name='地点(勾选宏达,否则福年)')
和RESTFRAMEWORK代币类:
@python_2_unicode_compatible
class Token(models.Model):
"""
The default authorization token model.
"""
key = models.CharField(_("Key"), max_length=40, primary_key=True)
user = models.OneToOneField(
settings.AUTH_USER_MODEL, related_name='auth_token',
on_delete=models.CASCADE, verbose_name=_("User")
)
created = models.DateTimeField(_("Created"), auto_now_add=True)
我的串行序列是:
class UserinfoSerializer(serializers.ModelSerializer):
class Meta:
model=Userinfo
fields="__all__"
class UserSerializer(serializers.ModelSerializer):
class Meta:
model=User
exclude=('password',)
userinfo=UserinfoSerializer()
class TokenSerializer(serializers.ModelSerializer):
class Meta:
model=Token
fields = '__all__'
depth=3
user = UserSerializer()
我想响应用户的数据和一对一的型号UserInfo,但我只是得到用户。我可以做什么?
这是我目前的令牌序列化数据数据的结果,并且UserInfo为null,如何获取UserInfo数据?
{
"key": "2012964fb4ffe07dc58c33a64d0ce48bedd34643",
"user": {
"id": 3,
"userinfo": null,
"last_login": null,
"is_superuser": false,
"username": "333",
"first_name": "叶同学",
"last_name": "",
"email": "",
"is_staff": false,
"is_active": true,
"date_joined": "2017-12-08T16:39:00+08:00",
"groups": [],
"user_permissions": []
},
"created": "2017-12-14T10:40:58.933072+08:00"
}
添加Usererializer的类Meta
depth = 1
或
使用UserInfoserializer用于userInfo = userInfoserializer(source =" userInfo")
喜欢
class UserSerializer(serializers.ModelSerializer):
userinfo = UserinfoSerializer(source="userinfo")
class Meta:
depth = 2
model=User
**fields = ('userinfo')** # You missed this that's why you used depth but it was not working for you. Please replicate same in TokenSerializer
请参阅下面的编辑
class TokenSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model=Token
fields = ('__all__','user')
depth=3
可能是全部,您需要提及所需的字段。