python-在Django Rest框架中加入相关模型
作者:互联网
尝试创建用于获取用户个人资料的API方法.问题在于,有两个与用户相关的表:django中内置的User和allauth框架中的SocialAccount.我想连接部分应该在序列化器中,所以在研究之后我想到了:
from rest_framework import serializers
from django.contrib.auth.models import User
from allauth.socialaccount.models import SocialAccount
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('pk', 'first_name', 'last_name')
class SocialSerializer(serializers.ModelSerializer):
user = UserSerializer(many=False, read_only=True)
class Meta:
model = SocialAccount
fields = ('uid', 'provider', 'user')
它可以工作,但是将其输出为嵌套对象:
{
"uid": "",
"provider": "",
"user": {
"pk": 5,
"first_name": "",
"last_name": ""
}
}
我希望将其作为一个对象:
{
"uid": "",
"provider": "",
"pk": 5,
"first_name": "",
"last_name": ""
}
解决方法:
或者,尝试
class SocialSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = SocialAccount
fields = ('uid', 'provider', 'user')
def to_representation(self, instance):
data = super(SocialSerializer, self).to_representation(instance)
user = data.pop('user')
for key, val in user.items():
data.update({key: val})
return data
标签:django-allauth,django-rest-framework,python,django 来源: https://codeday.me/bug/20191025/1928122.html