如何在DjangoRestFram中检索OneToOneField关系的对象属性

2024-10-02 12:37:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用一个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)

我还有以下模型序列化程序:

^{pr2}$

我遇到的问题是用户的序列化,在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,)

Tags: 用户模型true序列化modelsnulllengthmax
1条回答
网友
1楼 · 发布于 2024-10-02 12:37:13

我没看到你的代码有任何错误。您确定您的User对象有一个Userattribs对象。在

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

#import your related models and serializer
from your_app.models import *
from your_app.serializer import *
# create new user
user = User.objects.create(username="test")
# create new user attrib linked to `user` object
user_attrib = Userattribs.objects.create(user=user, organisation="DJANGO")
# serialize your `user` object
user_serializer = UserSerializer(user)
# display your serialized data
user_serializer.data
# outputs : {'last_name': '', 'userattribs': OrderedDict([('organisation', 'DJANGO'), ('description', None)]), 'email': '', 'username': 'test', 'first_name': '', 'id': 3}

如果可以的话,问题可能来自你的观点。在

相关问题 更多 >

    热门问题