gpt4 book ai didi

python - 在django rest framework中加入相关模型

转载 作者:太空宇宙 更新时间:2023-11-03 14:46:37 26 4
gpt4 key购买 nike

尝试创建用于获取用户配置文件的 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

关于python - 在django rest framework中加入相关模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48721806/

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