drf嵌套序列化-程序员宅基地

技术标签: python  Django  

在我们序列化的过程中,肯定会遇到嵌套序列化,不管是一对多嵌套还是多对一嵌套,在序列化器中我们使用参数source就解决了,为了解决N+1问题,我们使用select_related和prefetch_related就可以解决,但是还有一个问题就是在嵌套的过程中我们要对第二个序列化器的数据进行筛选,比如要id_delete=False,怎么办那?
解决办法:

class FilterdListSerializer(ListSerializer):
    def to_representation(self, data): # data为试图中传递过来的数据
        data = data.filter(is_del=False)   # 过滤已删除的
        return super().to_representation(data)

class GradeSerializer(ModelSerializer):
    student = StudentSerializer(many=True)

    class Meta:
        model = Grade
        fields = ('name', 'is_del', 'student')
        list_serializer_class = FilterdListSerializer


class SchoolSerializer(ModelSerializer):
    grade = GradeSerializer(many=True)

    class Meta:
        model = School
        fields = ('name', 'is_del', 'grade')
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42874635/article/details/106685800

智能推荐

ionic4 APP 安卓9及以上http无法发送网络请求_ionic app 允许http请求-程序员宅基地

文章浏览阅读640次。问题在ionic4 APP 中,获取后台数据返回error,错误信息如下后来经过排查,发现是安卓九及以上禁止http请求,需要使用https,发现问题后使用了这位大神的方法,这篇文章用介绍了三种方法,我才用的是第二种,将targetSdkVersion降到27以下解决方法打开build.gradle文件,路径如下myApp\platforms\android\build.gradle..._ionic app 允许http请求

分布式锁机制_lmb机制-程序员宅基地

文章浏览阅读411次。单点应用下,并发场景相对还比较好控制,可以借助java.util下的并发包工具能够解决大部分问题。但是在多节点分布式场景下,java.util.locks.ReentrantLock可能就并不能发挥多大作用了,此时我们需要借助分布式锁来控制并发。解决思路分布式场景下之所以不能够使用并发包下的锁解决并发问题,那是因为多节点是每个应用都有相互独立的进程,他们没有共享内存资源内存因此很难控制并发..._lmb机制

Windows下,VS2013/MinGW编译FFMPEG 3.3.1版本_mingw ffmpeg 配置vs2013编译器编译-程序员宅基地

文章浏览阅读4k次。Windows下,VS2013/MinGW编译FFMPEG3.3.1_mingw ffmpeg 配置vs2013编译器编译

C语言如何实现DES加密与解密_des加解密c语言实现-程序员宅基地

文章浏览阅读867次。常见的填充方式PKCS5Padding,PKCS5Padding表示当数据位数不足的时候要采用的数据补齐方式,也可以叫做数据填充方式。: 为8个字节共64位,Des算法规定,其中第8、16、24、......64位是奇偶校验位,不参与Des运算,所以常说Des的密钥为56位。ECB模式指的是电子密码本模式,是一种最古老,最简单的模式,将加密的数据分成若干组,每组的大小跟加密密钥长度相同;在工作中遇到的Des解密问题,第三方发来的数据需要我们进行des解密,但是解密的结果前几位始终是乱码。_des加解密c语言实现

【漏洞分析】Fastjson1.2.80版本RCE漏洞原理_fastjson1.2.80漏洞-程序员宅基地

文章浏览阅读2.1k次。通过研究v1.2.50和v1.2.68的绕过方式,主要是在ObjectDeserializer接口的子类JavaBeanDeserializer中存在expectClass非空的checkAutoType调用,这也是绕过的关键。这就是Fastjson中引入AutoType的原因,但是也正因为这个特性,因为功能设计之初在安全方面考虑不周,给后续的Fastjson使用者带来了无尽的痛苦。但是,Fastjson在序列化及反序列化的过程中,没有使用Java自带的序列化机制,而是自定义了一套机制。_fastjson1.2.80漏洞

晶圆划片工艺及贴膜知识分享_晶圆贴膜毛边-程序员宅基地

文章浏览阅读1k次,点赞9次,收藏17次。晶圆经过前道工序后芯片制备完成,还需要经过切割使晶圆上的芯片分离下来,最后进行封装。不同厚度晶圆选择的晶圆切割工艺也不同:厚度100um以上的晶圆一般使用刀片切割;刀片切割(Blade dicing or blade sawing)厚度不到100um的晶圆一般使用激光切割,激光切割可以减少剥落和裂纹的问题,但是在100um以上时,生产效率将大大降低;厚度不到30um的晶圆则使用等离子切割,等离子切割速度快,不会对晶圆表面造成损伤,从而提高良率,但是其工艺过程更为复杂;_晶圆贴膜毛边

随便推点

Window层级_windowmanager层级应用下面-程序员宅基地

文章浏览阅读617次。应用 Window 层级范围是 1~99,子 Window 层级范围是 1000~1999,系统 Window 层级范围是 2000~2999,这些层级范围对应着 WindowManager.LayoutParams 的 type 参数,如果想要 Window 位于所有 Window 的最顶层,那么采用较大的层级即可,很显然系统 Window 的层级是最大的,当我们采用系统层级时,需要声明权限。WindowManager是整个窗口管理机制里面的枢纽,也是这边重点要讲的。WindowManager实现了_windowmanager层级应用下面

在python中、使用( )语句导入模块_Python import导入模块-程序员宅基地

文章浏览阅读5.2k次。python中的import语句是用来导入模块的,在python模块库中有着大量的模块可供使用,要想使用这些文件需要用import语句把指定模块导入到当前程序中。import语句作用import语句作用就是用来导入模块的,它可以出现在程序中的任何位置。import语句语法使用import语句导入模块,import语句语法如下:import module关键字 模块名使用方法例如:import ma..._在python模块库中有大量模块可供使用,要想使用这些文件,就需要用( )语句把指定模

从postgresql中 导数据到 mysql-程序员宅基地

文章浏览阅读448次。从postgres中导出数据到csv中1 用postgres用户(root)登录postgresql2 建一个csv文件,并 chmod 7773 在原数据中修改----title中的;改成:(有;的标题在导出到csv中时会被拆分成两列)update article_article set title = 'China’s Copycats: Online vs. Offline...._将 postgresql 文件变成 mysql

Mac React Native环境搭建,一路下来踩过的坑_reactnative ios-deploy-程序员宅基地

文章浏览阅读1.6k次。优势最终是渲染成Native的View,不存在效率问题跨平台 AndroidiOS动态更新 (比较了Weex,最终还是选择了React Native)地址https://github.com/facebook/react-nativeStar:49427 成功案例京东,QQ,手机百度,Facebook,Instagramhttps://faceb_reactnative ios-deploy

文本摘要生成方法-程序员宅基地

文章浏览阅读3.8k次。文本摘要概览_文本摘要生成

7-56 统计不及格人数_7-56 不及格人数-程序员宅基地

文章浏览阅读599次。7-56 不及格人数分数 20全屏浏览题目切换布局作者 usx程序设计类课程组单位 绍兴文理学院n个同学参加了期末考试,以作出的题目数量代表成绩,成绩为0或者1表示不及格,求出不及格的同学数量。_7-56 不及格人数

推荐文章

热门文章

相关标签