Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django Rest框架中检索OneToOneField关系的对象属性_Python_Django_Django Models_Django Rest Framework - Fatal编程技术网

Python 如何在Django Rest框架中检索OneToOneField关系的对象属性

Python 如何在Django Rest框架中检索OneToOneField关系的对象属性,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我正在尝试使用OneToOneField扩展用户模型,以便为用户添加更多字段: class Userattribs(models.Model): user = models.OneToOneField(User) passcode = models.IntegerField(default=0) # about user organisation = models.CharField(max_length=100, null=True) desc

我正在尝试使用OneToOneField扩展用户模型,以便为用户添加更多字段:

class Userattribs(models.Model):    
    user = models.OneToOneField(User)
    passcode = models.IntegerField(default=0)

    # about user
    organisation = models.CharField(max_length=100, null=True)
    description = models.CharField(max_length=300, null=True)
我还有以下模型序列化程序:

class UserattribsSerializer(serializers.ModelSerializer):   
    class Meta:
        model = Userattribs

        fields = ('organisation', 'description')

class UserSerializer(serializers.ModelSerializer):
    userattribs = UserattribsSerializer(required=True)

    class Meta:
        model = User

        fields =('id', 'username', 'first_name', 'last_name', 'email', 'userattribs') 
我遇到的问题是用户的序列化,在json响应中没有包含“userattribs”。我花了几个小时在谷歌上搜索和敲打我的头。如果你能帮助我,我将永远感激你

提前谢谢

我已经添加了视图。我注意到的一件奇怪的事情是,当我查询(使用UserList)所有数据时,我会得到Userattribs。但是,当我检索单个项时,我不会获取Userattribs

###################################################
### Views #########################################
###################################################
class UserList(generics.ListCreateAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (permissions.AllowAny,)

class UserDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = User.objects.all()
    serializer_class = UserSerializer
    permission_classes = (access_permission,)

我没有看到你的代码中有任何错误。您确定您的
User
对象具有
Userattribs
对象吗

使用
python manage.py shell
打开python shell,然后输入以下内容以测试代码:

#导入相关模型和序列化程序
从您的应用程序导入*
从您的_app.serializer导入*
#创建新用户
user=user.objects.create(username=“test”)
#创建链接到“user”对象的新用户属性
user\u attrib=Userattribs.objects.create(user=user,organization=“DJANGO”)
#序列化“用户”对象
user\u serializer=UserSerializer(用户)
#显示序列化数据
用户_serializer.data
#输出:{'last_name':'','userattribs':OrderedDict([('Organization','DJANGO'),('description',None)],'email':'','username':'test','first_name':'','id':3}

如果没有问题,问题可能来自您的视图。

我看不到您的代码中有任何错误。您确定您的
User
对象具有
Userattribs
对象吗

使用
python manage.py shell
打开python shell,然后输入以下内容以测试代码:

#导入相关模型和序列化程序
从您的应用程序导入*
从您的_app.serializer导入*
#创建新用户
user=user.objects.create(username=“test”)
#创建链接到“user”对象的新用户属性
user\u attrib=Userattribs.objects.create(user=user,organization=“DJANGO”)
#序列化“用户”对象
user\u serializer=UserSerializer(用户)
#显示序列化数据
用户_serializer.data
#输出:{'last_name':'','userattribs':OrderedDict([('Organization','DJANGO'),('description',None)],'email':'','username':'test','first_name':'','id':3}

如果可以,问题可能来自您的观点。

非常感谢您的回复。我按照指示做了,一切似乎都正常:/I我怀疑这可能与序列化程序有关,但在我看来是正确的。类UserDetail(generics.RetrieveUpdateDestroyAPIView):queryset=User.objects.all()序列化程序\u类=UserSerializer权限\u类=(访问权限,)欢迎使用。:)请将您的观点添加到您的问题中。感谢您对路易斯的帮助。我已经更新了这篇文章,我非常感谢你的回复。我按照指示做了,一切似乎都正常:/I我怀疑这可能与序列化程序有关,但在我看来是正确的。类UserDetail(generics.RetrieveUpdateDestroyAPIView):queryset=User.objects.all()序列化程序\u类=UserSerializer权限\u类=(访问权限,)欢迎使用。:)请将您的观点添加到您的问题中。感谢您对路易斯的帮助。我已经用我的视图更新了这篇文章,请添加你的
url.py
UserDetail
视图的输出。这是什么
access\u permission
变量?注释权限\u类以调试添加您的
url.py
UserDetail
的输出请查看。这是什么
access\u permission
变量?注释要调试的类的权限