首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django DRF: ModelViewSet:如何显示一些外键属性和id

Django DRF(Django REST Framework)是一个用于构建Web API的强大框架。ModelViewSet是DRF提供的一个视图集,它集成了常用的CRUD操作(创建、读取、更新、删除)以及其他一些常见的API操作。

在ModelViewSet中显示外键属性和id,可以通过重写序列化器(Serializer)的方式来实现。首先,需要创建一个继承自DRF的ModelSerializer的自定义序列化器。在该序列化器中,可以通过使用SerializerMethodField字段来显示外键属性和id。

以下是一个示例代码:

代码语言:txt
复制
from rest_framework import serializers
from .models import YourModel, ForeignKeyModel

class ForeignKeyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = ForeignKeyModel
        fields = ['id', 'name']  # 显示外键属性和id

class YourModelSerializer(serializers.ModelSerializer):
    foreign_key = ForeignKeyModelSerializer()  # 外键属性序列化器

    class Meta:
        model = YourModel
        fields = ['id', 'name', 'foreign_key']  # 显示外键属性和id

class YourModelViewSet(viewsets.ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourModelSerializer

在上述代码中,ForeignKeyModelSerializer用于序列化外键属性,YourModelSerializer用于序列化YourModel模型。通过在YourModelSerializer中嵌套使用ForeignKeyModelSerializer,可以显示外键属性和id。

这样,当访问YourModel的API时,将会显示外键属性和id的相关信息。

关于Django DRF的更多信息和使用方法,可以参考腾讯云的相关产品文档:

请注意,以上答案仅供参考,具体实现方式可能因项目需求和实际情况而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django学习-第七讲:django 中的常用字段、字段属性表关系、操作

模型中Meta配置 对于一些模型级别的配置。我们可以在模型中定义一个类,叫做Meta。然后在这个类中添加一些属性来控制模型的作用。...表关系 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持约束的。的存在使得ORM框架在处理表关系的时候异常的强大。...第一个参数是引用的是哪个模型,第二个参数是在使用引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE、SET_NULL等。这里以一个实际案例来说明。...比如有一个Category一个Article两个模型。一个Category可以有多个文章,一个Article只能有一个Category,并且通过进行引用。...因此在底层,Django为Article表添加了一个属性名_id的字段(比如author的字段名称是author_id),这个字段是一个,记录着对应的作者的主键。

4K30

DRF进阶之DRF视图常用功能

DRF视图常用功能 DRF视图 DRF视图类介绍 在DRF框架中提供了众多的通用视图基类与扩展类,以简化视图的编写。...,并结合router自动映射路由 ModelViewSet:继承GenericAPIView五个扩展类,封装好各种请求,更加完善,业务逻辑基本不用自己写了。...django-project\day2\django_drf>python manage.py startapp myapp 项目主路由配置: django_drf/urls.py 创建项目视图:...增加serializer_class属性,直接指定使用的序列化器 增加过滤器属性:filter_backends 增加分页属性:pagination_class 增加lookup_field属性实现get_object...示例:重写create()方法,修改数据响应内容格式 新增app视图: myapp/views.py from rest_framework.viewsets import ModelViewSet

4.6K10
  • DRF系列总结二:脚手架搭建

    一、安装DRF   首先,我们创建一个Django基础工程demo,并创建一个测试app,得到了Django框架的初始化代码,代码目录结构如下: # django-admin startproject...无关的一些目录,重点关注demo目录,这个目录专门提供给开发者进行工程配置settings.py。...第三方系统配置表 """ system_id = models.IntegerField(_('系统id'), default=0) name = models.CharField...提供的,通过阅读代码和文档,我们发现ModelViewSet的父类APIView中的finalize_response函数恰好是DRF定义的response统一处理的接口,于是我们可以重写ModelViewSet...前面我们主要讲了如何安装DRF,接着介绍了如何配置DRF,并将自己项目中的经验总结在了里面,希望能对后面的DRFers有所帮助。

    3.7K60

    【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

    (ModelViewSet): # 指定查询集属性 queryset = BookInfo.objects.all() # 指定序列化器 serializer_class..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口的方法 最后,def还提供了只读模型视图集...[ReadOnlyModelViewSet],可以提供获取多条数据一条数据的视图方法 """ from rest_framework.viewsets import ModelViewSet,ReadOnlyModelViewSet...from rest_framework.decorators import action class BookModelViewSet(ModelViewSet): # 指定查询集属性...(ModelViewSet): # 指定查询集属性 queryset = BookInfo.objects.all() # 指定序列化器 serializer_class

    1.6K30

    Django REST Framework-什么是路由

    Django REST Framework(以下简称DRF)是一个强大的框架,用于在Django中构建Web API。路由(Routing)是DRF中的一个关键概念,用于确定请求的处理方式。...在Web应用程序中,路由是用于决定如何处理传入请求的机制。在DRF中,路由的作用是将特定的URL与处理该URL请求的视图函数相匹配。DRF中的路由系统是基于Django的URL路由系统构建的。...DRF路由系统中最常见的两个路由是:SimpleRouterDefaultRouter。...这可以通过在视图类中定义一个名为“basename”的属性来实现,如下所示:from rest_framework import viewsetsclass ArticleViewSet(viewsets.ModelViewSet...我们设置了querysetserializer_class属性,然后定义了一个名为“basename”的属性。这将告诉DRF生成URL模式时使用的基本名称。

    46911

    django写接口(实战篇)

    接口分页效果 我们可以看到接口返回的信息还包含了前一页后一页的 url 是不是很人性化 接口数据多条件筛选 目前我们的接口要查找特定的信息只能通过 id 来查找,这肯定是不够完善的,这部分将设置接口的多条件查询...',) } 基本配置完后我们需要对我们的 viewSet 做些修改,增加一个 filter_backends 属性 filter_fields 属性 class PostViewSet(viewsets.ModelViewSet...', 'username', 'posts'] class PostSerializer(serializer.ModelSerializer): # 显示 author 中的某个字段...类未登录只读或者登陆后无权限只读 permission_classes = (permissions.IsAuthenticatedOrReadOnly,) 修改后我们运行项目,并通过 httpie 进行一些读取修改的操作...if request.method in permissions.SAFE_METHODS: return True # 除了 SAFE_METHOD 的方法我们通过判断是否为该

    2.1K20

    Django rest Framework入门 四 :视图

    Django rest Framework入门 二 :DRF框架初体验中其实已经使用了视图了(book.views里面的代码),而且就是实际开发中最常用的模式,但是那是经过DRF框架高度封装的,代码的可读性不好...当视图有对应的Django Model(数据库模型类)的时候,最常用的就是ModelViewSet,因为DRF为我们封装了大量重复的事情,在实际开发工作中可以节省很多时间。...这里事实上是DRF框架对路由的分发机制在Django的基础上做了优化,让我们可以将所有的请求方法都写在一个视图类中,而不用像在Django中那样必须区分列表类视图还是详情类视图。...# 实现自定义的API 上面两个案例中,不管是使用ModelViewSet还是ViewSet,实现的都是对数据库的增删查改这四种功能,但是实际开发过程中,往往还有其他一些比较复杂的场景,这个时候就需要自定义开发一些...这里以查询bookinfo表中最新的一本书(id最大的书)这个需求为例,分别使用ModelViewSetViewSet实现, * **基于ModelViewSet实现自定义API** 基于ModelViewSet

    9810

    DRF中多对多ManytoMany字段的更新和添加

    orderId 是自动生成的UUID订单的区域是,下单人也是,菜品orderMenu是一个多对多字段(其实通过我查到的方法说的都是字段就可以实现但是个人觉得菜品订单应该是多对多会比较好理解...in MenuSerializer(instance.orderMenu, many=True).data: # 实例Order的ordercenterthough_set查找表传入查找的字段并用...reason # 列表添加,最好返回所有内容 representation['orderMenu'].append(i) # 处理下把订单区域下单人显示出来...list retrieve 方法之前也是想只用一个序列化器来完成,但是总是会出现字段报错的情况出于无奈正好也要大佬提出这样的方法就试了一下这里 ReadOrderCenterSerializer主要就是为了自定义读取全部单个数据需要显示的内容...主要是一个思路,drf 的ModelSerializer ModelViewSet 封装的太严实了,通过这样的方法来更新和添加多对多字段实属自己技术不成熟。

    91720

    Flask框架在Python面试中的应用与实战

    Django REST framework (DRF) 是一个强大而灵活的工具包,用于构建Web API,特别是基于Django的应用程序。...路由与URL配置路由器(Router):说明路由器如何根据ViewSet自动创建API路由,以及如何自定义路由命名视图动作。...权限控制与认证权限(Permissions):概述DRF中的权限系统,列举常用权限类(如IsAuthenticated、IsAdminUser等),并展示如何自定义权限。...认证(Authentication):介绍DRF支持的多种认证方式(如Token、Session、OAuth等),以及如何配置全局或视图级别的认证。...过滤(Filtering):介绍使用django-filter库或内置filterset_fields实现资源过滤。排序(Sorting):讲解如何启用排序功能,允许客户端通过查询参数指定排序字段。

    13510

    Django进阶:DRF(Django REST framework)

    什么是DRFDRFDjango REST framework的缩写,官网上说:Django REST framework是一个强大而灵活的工具包,用于构建Web API。...关于如何设计出符合REST风格的API,可以参考阮一峰的《RESTful API 设计指南》 那么用DRF实现的就是RESTful API吗?其实DRF没有强制实现。...可以发现,Django程序相比,我们没有写template做前端的显示,而是写了序列化类提供API。前端可以分离出来,使用API来后端通信。...django drf (图片来自:一图看懂DjangoDRF(https://zhuanlan.zhihu.com/p/53957464)) 测试API: 使用浏览器访问网址: http://127.0.0.1...:https://www.django-rest-framework.org/ 一图看懂DjangoDRF:https://zhuanlan.zhihu.com/p/53957464 一文彻底弄懂

    58720

    DRF框架学习(二)

    的一个别称 重点掌握的是实现的思路,如何去将需求一步步实现出来,然后其次重要的就是代码。...通常简称为DRF框架 或 REST framework。 DRF框架是建立在Django框架基础之上,由Tom Christie大牛二次开发的开源项目。...3.1环境安装与配置 DRF需要以下依赖: Python (2.7, 3.2, 3.3, 3.4, 3.5, 3.6) Django (1.10, 1.11, 2.0) DRF是以Django扩展应用的方式提供的...:DRF框架中所有序列化器的父类,定义序列化器类时,可以直接继承此类 # serializers.ModelSerializer:是Serializer的子类,在父类基础上,添加了一些功能 class...default 我们在使用序列化反序列化时使用的默认值 allow_null 表明该字段是否允许传入None,默认False help_text、label_text 可以理解为注释,在web直观显示的时候有一个显示信息

    4.1K30

    重点内容回顾-DRF

    重点内容回顾-DRF 1. on_delete on_delete是定义模型类中外的一个选项。 on_delete选项指明的是主表删除数据的时候,对于引用的表数据如何处理。...b.PROTECT保护,通过抛出一个异常ProtectedError异常,来阻止删除主表中被引用的数据。...2. related_name related_name是在定义模型类时,的一个选项。它的功能下面慢慢给大家分析一下。...为了方便我们开发RestAPI,DRF框架除了提供APIViewGenericAPIView视图类之外,还提供了一些子类视图类,这些子类视图类同时继承了GenericAPIView对应的Mixin扩展类...ModelViewSet 继承自GenericViewSet5个对应Mixin扩展类。如果视图集中一次性想要提供5个接口的时候,我们可以继承此父类。

    2.4K20

    Django REST Framework-路由器(一)

    Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。...在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。一、路由器的作用在DRF中,路由器的主要作用是将URL视图函数绑定在一起。...路由器可以根据视图函数的名称参数,自动生成URL,并将请求分发到对应的视图函数中。使用路由器可以避免手动编写URL配置的繁琐容易出错。二、路由器的使用安装DRF在使用路由器之前,需要先安装DRF。...使用视图集需要先定义一个继承自ModelViewSet或ViewSet的类,然后将这个类传递给路由器的register方法即可。.../books/listPOST/books/createGET/books/{id}/retrievePUT/books/{id}/updatePATCH/books/{id}/partial_updateDELETE

    71941

    Django rest Framework入门 二 :DRF框架初体验

    Django rest Framework入门 一 :手工实现常见API中记录了如何手工基于Django实现常见的API类型,这篇笔记记录一下DRF框架简单使用的体验。...笔记中提到的代码repo:https://github.com/yexia553/drf 安装配置修改 安装DRF 安装drf之前要先安装Django pip install djangorestframework...'rest_framework', ] 编写序列化器 序列化反序列化的意思其实就是利用Django的Model将数据库中的数据进行一定的格式修改(比如dict变成json)之后返回给api请求者将从...':'查询的数据不存在'}, status=404) res = { 'id': book.id, 'title': book.title, 'read': book.read...class BookInfoView(ModelViewSet): '''图书信息视图,包含增删查改所有操作''' queryset = BookInfo.objects.all(

    8510

    DjangoRestFramework,认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    下面我们玩一下drf提供的认证组件的玩法。..._request,所以上面的取值方式是没有问题的,不过人家APIView不仅封装了老的request对象,并且还给你加了query_params属性老的request.GET得到的内容是一样的,所以可以直接按照下面的方式来写...') self.now = time.time() if id not in visit_record: visit_record[id] =...,还有个page属性,这个page属性是第几页,用法是http://127.0.0.1:8000/books/?...pp=1,查询哪一页的数据 page_size_query_param = 'size' #如果我们显示的一页数据不够你用的,你想临时的多看展示一些数据,可以通过你设置的这个page_size_query_param

    59920

    5 分钟,带你快速入门 Django DRF

    DRF 框架,全称为 Django Rest Framework,是 Django 内置模块的扩展,用于创建标准化 RESTful API;它利用 ORM 映射数据库,并自定义序列化数据进行返回,多用于前后端分离项目...项目 # 项目名称:drf_demo django-admin startproject drf_demo 2-4 数据库映射及超级用户创建 ?...python3 manage.py migrate # 创建一个超级用户,记住用户名密码 python3 manage.py createsuperuser 2-5 添加应用并配置 DRF 权限...自定义序列化类并关联模型 在项目目录下的 urls.py 文件中,自定义一个类继承于「 serializers.HyperlinkedModelSerializer 」 利用内部类「 Meta 」指定模型要序列化的属性...」类 # urls.py from django.contrib.auth.models import User # 自定义定义视图表现 class UserViewSet(viewsets.ModelViewSet

    1.7K20
    领券