原文作者:我辈李想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。
DRF应用和管理
【DRF配置管理】Django安装DRF框架并生成openapi风格文档
【DRF配置管理】如何实现JWT身份验证
【DRF配置管理】如何使用序列化:验证码、注册和登录
【DRF配置管理】如何结合ORM实现排序、模糊搜索、范围查询
【DRF配置管理】如何在视图类使用get_objects()
【DRF配置管理】如何实现RBAC页面菜单和按钮权限
【DRF配置管理】如何建立coreapi风格api接口文档
【DRF配置管理】如何建立swagger风格api接口文档
一、get_objects作用范围
get_objects一般用于获取一条、更新和删除,在ModelViewSet类中,影响retrieve、update、destroy方法,我们自定义的方法也可以用到instance = self.get_object()。
二、‘重写’get_objects
网络上很多博客在使用drf时,都可能介绍过get_objects的重写,重写可以解决一些问题,但是也会产生一些新的疑问,这个get_objects在什么时候被应用。
我的理解是get_objects是不需要重写的,只要知道get_objects是被怎么应用的就可以灵活的使用。
我们在urls.py文件会以如下方式设置路由
这里可以看出来,retrieve、update、destroy方法是跟路由的int:pk相关的,其实pk在这里的作用就是get_objects实现的orm查询Target.objects.get(pk=int)。
drf视图类中提供可修改pk的参数lookup_field,通过他可以实现修改路由影响get_objects参数的效果。
按照如上设置,我们我们就以实现重写get_objects的效果了