【发布时间】:2017-07-23 16:59:20
【问题描述】:
我有两个模型,一个用户模型和一个配置文件模型。我使用用户 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")
如何将相应的配置文件模型附加到查询集中,以便生物、网站等的相应字段得到序列化,以便我可以在可浏览的 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 上获取字段 user 的值时出现 AttributeError。
序列化程序字段可能命名不正确,并且与 User 实例上的任何属性或键都不匹配。
原始异常文本是:“用户”对象没有属性“用户”。
我在这里做错了什么?
【问题讨论】:
标签: django django-rest-framework