为啥 django-rest-framework 不显示 OneToOneField 数据 - django

     2023-02-24     183

关键词:

【中文标题】为啥 django-rest-framework 不显示 OneToOneField 数据 - django【英文标题】:Why django-rest-framework doesn't display OneToOneField data - django为什么 django-rest-framework 不显示 OneToOneField 数据 - django 【发布时间】:2018-02-16 16:26:13 【问题描述】:

我想在我的网站中设置 Restful API。我使用了 django-rest-framework。 当我从数据库中获取对象时,它不显示相关对象。

sn-p下面是我的第一个模型(父模型):

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, related_name='profile',on_delete=models.CASCADE)
    name = models.CharField(max_length=30)
    family = models.CharField(max_length=50)

下面的sn-p是我的第二个模型(子模型):

class Klass(models.Model):
    title = models.CharField(max_length=50)
    description = models.CharField(max_length=500)
    teacher = models.ForeignKey(Profile,related_name='teacher', on_delete=models.CASCADE)
    university = models.CharField(max_length=50, blank=True, null=True)

正如您在第二个 sn-p 中看到的,teacher 的值来自 Profile 模型。

但在 django-rest-framework API 视图中,它不显示教师的姓名,而是显示pk

下面的 sn-ps 是我的序列化器和视图:

# serializer
class KlassSerializer(serializers.ModelSerializer):

    class Meta:
        model = Klass
        fields = ('id', 'title', 'description', 'teacher')

# view
class KlassView(APIView):

    def get(self, request, pk=None):
        if pk is not None:
            klass = Klass.objects.filter(pk=pk).get()
            serializer = KlassSerializer(klass)
            return Response('message': 'class get ', 'data': serializer.data,)

结果如下:


    "message": "class get ",
    "data": 
        "id": 13,
        "title": "ُThe First Class",
        "description": "Nothing for now!",
        "teacher": 2
    

我该如何解决这个问题? 谢谢

【问题讨论】:

【参考方案1】:

试试看,更详细nested-relationships

class TeacherSerializer(serializers.ModelSerializer):

    class Meta:
        model = Profile
        fields = ('name')

class KlassSerializer(serializers.ModelSerializer):
    teacher = TeacherSerializer(read_only=True)

    class Meta:
        model = Klass
        fields = ('id', 'title', 'description', 'teacher')

【讨论】:

很高兴为您提供帮助)

断言错误:Django-rest-Framework

】断言错误:Django-rest-Framework【英文标题】:Assertionerrorat:Django-rest-Framework【发布时间】:2015-02-1313:36:02【问题描述】:我正在使用python3.4、Django1.7.1(书中考虑的版本)、Postgres9.3,我的IDE是Eclipse。我一直在研究“轻量级Django-E... 查看详情

记录对 django-rest-framework 的请求

】记录对django-rest-framework的请求【英文标题】:Loggingrequeststodjango-rest-framework【发布时间】:2013-03-1219:37:12【问题描述】:出于调试目的,我想使用Django的日志记录机制来记录每个“到达”django-rest-framework门口的传入请求。Djagno... 查看详情

django-rest-framework:如何序列化已经包含 JSON 的字段?

】django-rest-framework:如何序列化已经包含JSON的字段?【英文标题】:django-rest-framework:HowDoISerializeaFieldThatAlreadyContainsJSON?【发布时间】:2014-04-0501:41:03【问题描述】:我对django-rest-framework还是很陌生,所以需要一些帮助。我有一... 查看详情

django-rest-framework: api 版本控制

】django-rest-framework:api版本控制【英文标题】:django-rest-framework:apiversioning【发布时间】:2012-12-2512:52:55【问题描述】:谷歌搜索似乎普遍认为,在RESTURI中嵌入版本号是一种不好的做法和一个坏主意。即使在SO上,也有强烈的支持... 查看详情

django-rest-framework 按日期过滤=无

】django-rest-framework按日期过滤=无【英文标题】:django-rest-frameworkfilterbydate=None【发布时间】:2014-02-2611:35:00【问题描述】:我正在使用django-rest-framework和django-filter。我需要检索date属性为None的小部件列表,但无论我尝试什么查询... 查看详情

django-rest-framework、多表模型继承、ModelSerializers 和嵌套序列化器

】django-rest-framework、多表模型继承、ModelSerializers和嵌套序列化器【英文标题】:django-rest-framework,multitablemodelinheritance,ModelSerializersandnestedserializers【发布时间】:2014-07-2518:17:22【问题描述】:我在文档或互联网上找不到此信息。... 查看详情

如何在 django-rest-framework 中为 API 使用 TokenAuthentication

】如何在django-rest-framework中为API使用TokenAuthentication【英文标题】:HowtouseTokenAuthenticationforAPIindjango-rest-framework【发布时间】:2013-07-0718:26:11【问题描述】:我有一个django项目,使用django-rest-framework来创建api。想要使用基于令牌的... 查看详情

django-rest-framework:每个 ViewSet 可以有多个模板吗?

】django-rest-framework:每个ViewSet可以有多个模板吗?【英文标题】:django-rest-framework:CanIhavemultipletemplatesperViewSet?【发布时间】:2020-07-0701:30:04【问题描述】:我为我的模型创建了一个序列化程序和ViewSet,并为列表视图添加了一个... 查看详情

我无法使用 Django-Rest-Framework 注册用户

】我无法使用Django-Rest-Framework注册用户【英文标题】:IcannotregisterauserusingDjango-Rest-Framework【发布时间】:2021-04-0621:11:54【问题描述】:我无法使用DjangoRestFramework添加新用户。这是我的models.py代码:classProfile(models.Model):user=models.O... 查看详情

使用 django-rest-framework 创建对象后返回 id 值

】使用django-rest-framework创建对象后返回id值【英文标题】:Returningidvalueafterobjectcreationwithdjango-rest-framework【发布时间】:2013-09-1920:32:03【问题描述】:我正在使用django-rest-framework通用视图通过POST请求在模型中创建对象。我想知道... 查看详情

在 django-rest-framework 中捕获参数

】在django-rest-framework中捕获参数【英文标题】:Captureparametersindjango-rest-framework【发布时间】:2014-02-1302:01:42【问题描述】:假设这个网址:http://localhost:8000/articles/1111/comments/我想获取给定文章的所有cmets(此处为1111)。这就是... 查看详情

django-rest-framework 是不是提供管理站点来管理模型?

】django-rest-framework是不是提供管理站点来管理模型?【英文标题】:Doesthedjango-rest-frameworkprovideanadminsitetomanagemodels?django-rest-framework是否提供管理站点来管理模型?【发布时间】:2020-12-1812:02:18【问题描述】:我正在寻找使用djang... 查看详情

Django-rest-framework + React-Admin:URL 反斜杠问题

】Django-rest-framework+React-Admin:URL反斜杠问题【英文标题】:Django-rest-framework+React-Admin:URLBackslashissue【发布时间】:2019-02-0317:59:22【问题描述】:我有一个djangorestapi,它实现了如下突出显示的视图集。classSubjectViewSet(viewsets.ModelView... 查看详情

无法使用视图名称 (django-rest-framework) 解析超链接关系的 URL

】无法使用视图名称(django-rest-framework)解析超链接关系的URL【英文标题】:CouldnotresolveURLforhyperlinkedrelationshipusingviewname(django-rest-framework)【发布时间】:2018-06-2919:50:26【问题描述】:问题:我收到这样的错误。在/api/users/处配置不... 查看详情

在视图集中创建的 Django-rest-framework 权限

】在视图集中创建的Django-rest-framework权限【英文标题】:Django-rest-frameworkpermissionsforcreateinviewset【发布时间】:2014-05-1017:03:02【问题描述】:我正在尝试创建一个RESTAPI并且卡在用户注册上:基本上我需要在注册之前获得访问令牌... 查看详情

django-rest-framework 令牌认证和注销

】django-rest-framework令牌认证和注销【英文标题】:django-rest-frameworkTokenAuthandlogout【发布时间】:2015-03-0707:21:07【问题描述】:据了解,obtain_auth_token视图用作登录功能。您提供凭据并取回令牌。什么会注销?我应该在注销时删除... 查看详情

Django-Rest-Framework 系统检查自定义 HTTP 标头(应用程序 - 令牌)

】Django-Rest-Framework系统检查自定义HTTP标头(应用程序-令牌)【英文标题】:Django-Rest-FrameworksystemtocheckcustomHTTPheader(application-token)【发布时间】:2020-04-1707:05:30【问题描述】:我使用Django和Django-rest-framework。我必须检查一个自定... 查看详情

如何在 django-rest-framework 中对权限进行单元测试?

】如何在django-rest-framework中对权限进行单元测试?【英文标题】:Howtounittestpermissionsindjango-rest-framework?【发布时间】:2016-09-0708:14:14【问题描述】:她的权限是我想要进行单元测试的示例权限。#permissions.pyfrommyapp.modelsimportMembersh... 查看详情