隐藏页面特效

采用自定义模型字段代替序列化器嵌套的使用来返回我们想要的数据

1|0需求


导航栏中,我们有父导航和嵌套的子导航,我们在序列化器中使用了序列化器嵌套来获取子导航,所以出现了子导航显示数据没有经过过滤全部输出的bug问题。解决方案有2种

1.重写Serializer序列化器基础类的to_representation方法,通过instance模型对象进行过滤。 2.采用自定义模型字段代替序列化器嵌套的使用

2|0自定义序列化器嵌套的使用


在模型类中定义你要返回的类型 class Nav(BaseModel): .... class Meta: ... def __str__(self): return self.name @property def son_list(self): """子导航""" ret = self.son.filter(is_show=True, is_deleted=False).order_by('orders', 'id') # 得到每个对象 data = [] for nav in ret: # 循环quertset集合 data.append({ 'name': nav.name, 'icon': nav.icon, 'link': nav.link, 'is_http': nav.is_http, }) return data

3|0序列化器中直接使用这个函数名即可


class NavModelSerializer(serializer.ModelSerializer): """导航序列化器""" class Meta: model = Nav fields = ['name', 'icon', 'link', 'is_http', 'son_list']

__EOF__

本文作者404 Not Found
本文链接https://www.cnblogs.com/weiweivip666/p/13854414.html
关于博主:可能又在睡觉
版权声明:转载请注明出处
声援博主:如果看到我睡觉请喊我去学习
posted @   我在路上回头看  阅读(122)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示