返回django rest框架中两个不同模型中包含的数据

返回django rest框架中两个不同模型中包含的数据,django,django-rest-framework,Django,Django Rest Framework,我有两个模型:用户模型和配置文件模型。我使用用户id作为配置文件模型的外键 class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE,primary_key=True) bio = models.TextField(max_length=500, blank=True) website = models.TextField(max_length=200,

我有两个模型:用户模型和配置文件模型。我使用用户id作为配置文件模型的外键

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,primary_key=True)
    bio = models.TextField(max_length=500, blank=True)
    website = models.TextField(max_length=200, blank=True)
    phoneno = models.TextField(max_length=200, blank=True)
    gender = models.TextField(max_length=200, blank=True)
    avatar = models.ImageField('profile picture', upload_to='images/avatar/', default='/images/avatar/blank.png')
我正在使用django的内置用户模型,其中包含用户名、密码等字段

我想创建一个序列化程序,在其中我可以返回概要文件和用户模型的详细信息。到目前为止,如果我使用UserSerializer而不是下面的ProfileUserCombinedSerializer,我可以返回用户的详细信息

但是,我已经创建了ProfileUserCombinedSerializer,以便可以组合这两个值,到目前为止,我有以下内容

class UserSeralizer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('username', 'password',"email","first_name","last_name")


class ProfileUserCombinedSerializer(serializers.HyperlinkedModelSerializer):
    user = ProfileSerializer()
    class Meta:
        model = User
        fields = ('username',"user")
我如何将相应的概要文件模型附加到queryset中,以便将bio、website ect的相应字段序列化,以便我可以在可浏览的api中查看它们

class returnProfileDetailsFromUser(generics.ListAPIView):
    serializer_class = ProfileUserCombinedSerializer
    def get_queryset(self):
        i = self.kwargs['id']
        queryset = User.objects.all()
        queryset = queryset.filter(id=i)
        return queryset
现在我得到了以下错误:

试图获取序列化程序
ProfileUserCombinedSerializer
上的字段
用户
的值时,获取了AttributeError。 序列化程序字段的名称可能不正确,并且与
用户
实例上的任何属性或键都不匹配。 原始异常文本为:“User”对象没有属性“User”


我做错了什么?

首先,在Django rest框架中,您必须在模型中使用相关名称。将模型重写为:

models.py 序列化程序.py 然后在视图中调用UserSeralizer并发送用户ID

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,primary_key=True, related_name = 'user_profile')
class ProfileUserCombinedSerializer(serializers.ModelSerializer):
    user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), required=False)
    class Meta:
        model = Profile
        fields = ("user","bio",)

class UserSeralizer(serializers.ModelSerializer):
    user_profile = ProfileSerializer()
    class Meta:
        model = User
        fields = ('username', 'password',"email","first_name","last_name","user_profile",)