前一节,我们学了serializer 的基本用法,在展示choice 或者有多层关联的外键的时候,我们需要自定义方法,但是Django 有默认的方法,只需要加一个变量即可。

depth 表示返回的深度,设置为几就表示有几层的关联外键信息,优点是书写简便,缺点是相应速度慢,不知道总共几层时,也不知道如何设置值,官方建议1-10,大多数是1-4即可。

2. 返回一个超链接

现在,通过group为例,我们为url 中添加一个动态参数,首先进行url 的正则设置

from django.urls import path, re_path
from api import viewsurlpatterns = [path('user/', views.UserView.as_view()),path('userinfo/', views.UserInfo.as_view()),# 这个是我们这次进行测试的,pk 为参数,\d+ 表示数字出现一次到多次re_path('group/(?P<pk>\d+)', views.GroupView.as_view(), name='group')
]

以下是代码实例。

将返回的字段设置为超链接

下面是所有的代码


class UserInfoSerializer(serializers.ModelSerializer):# 这里的view_name 和路由里面的 name 相互对应,lookup_field 是根据关键字查找,后面的表示根据参数查找group = serializers.HyperlinkedIdentityField(view_name='group',lookup_field='group_id', lookup_url_kwarg='pk')class Meta:model = models.UserInfofields = ['id', 'username', 'password', 'group', 'roles']depth = 0class UserInfo(APIView):def get(self, request, *args, **kwargs):users = models.UserInfo.objects.all()# 加了上面的超链接字段之后,要加上context 参数ser = UserInfoSerializer(instance=users, many=True, context={'request': request})ret = json.dumps(ser.data, ensure_ascii=False)return HttpResponse(ret)class GroupSerializer(serializers.ModelSerializer):class Meta:model = models.UserGroupfields = "__all__"class GroupView(APIView):def get(self, request, *args, **kwargs):# 获取url 种的参数pk = kwargs.get('pk')# 根据参数,在数据库中进行匹配值obj = models.UserGroup.objects.filter(id=pk).first()ser = GroupSerializer(instance=obj, many=False)ret = json.dumps(ser.data, ensure_ascii=False)return HttpResponse(ret)

Django serializer 方法补充之:depth 与字段生成超链接相关推荐

  1. django filter查询多选_动态filter查询数据Django实现方法

    这是我在学习Django时看到的关于动态filter查询数据Django实现方法.当时很受用,解决了我在工作中遇到的一个问题.可能有朋友会需要,转来玩蛇网python学习平台和大家一同分享下. 在平时 ...

  2. Django 项目一补充

    Django create添加数据后会返回新添加的数据行的queryset对象.从而获取自增id 应用场景:添加新随笔之后,将根据自增id,添加文章详细表和文章标签关系表 一对一关系的外键反向查询: ...

  3. django管理后台列表页,TextField字段展示换行等格式(format_html)

    因为在django后台管理页面中国,在详情页中输入字段后,在列表页只能一行显示,所以,最后的解决办法是: 在model中定义一个新字段,然后运用到了format_html 方法,把原本的字段retur ...

  4. Sort方法根据T类某个字段对泛型集合ListT排序

    实现:采用Sort方法根据T类某个字段对泛型集合List<T>排序. 实现代码如下: static void Main(string[] args){List<Stud> st ...

  5. as3 TweenMax TweenLite方法补充

    as3 TweenMax TweenLite方法补充(暂停.重新播放.倒序播放)2011-08-01 18:35前不久TweenMax版本升级了.现在来好好的学习一下: 帮助文档:http://www ...

  6. 【JetPack】ViewBinding 视图绑定组件 ( 启用模块 | 视图绑定定制 | 绑定类名称生成规则 | 绑定类字段生成规则 | 绑定类获取根视图 | 绑定类获取布局组件 )

    文章目录 I . 视图绑定组件简介 II . 视图绑定 ViewBinding 使用前提 ( Android Studio 3.6 ) III . 视图绑定组件启用 IV . 定制视图绑定 ( 启用视 ...

  7. 【Java进阶】有哪些方法可以在运行时动态生成一个Java类?

    在开始今天的学习前,我建议你先复习一下专栏第 6 讲有关动态代理的内容.作为 Java 基础模块中的内容,考虑到不同基础的同学以及一个循序渐进的学习过程,我当时并没有在源码层面介绍动态代理的实现技术, ...

  8. python random包含尾部吗_Python标准库random的方法randint(m,n)用来生成一个[m,n]区间上的随机整数。...

    [判断题]已知列表 x = [1, 2, 3],那么执行语句 x = 3 之后,变量x的地址不变 [判断题]只能对列表进行切片操作,不能对元组和字符串进行切片操作 [单选题]Which is not ...

  9. Django 数据库查询优化,choices参数(数据库字段设计常见),MVC和MTV模型,多对多三种创建方式...

    数据库查询优化 orm语句的特点:惰性查询 如果仅仅只是书写了orm语句,在后面没有用到该语句所查询出来的参数,那么orm会自动识别,并不执行 举例: res = models.Book.object ...

  10. JSTL+EL表达式方法获取Oracle的Clob字段内容

    我们在页面获得数据的时候一般的类型还是很好获得的,但是一遇到Clob类型就比较麻烦,最常用的方法是用一个流将其读取出来.使用MVC框架的时候这些都是无所谓的事情,因为反正是写在java类中怎么写都行, ...

最新文章

  1. 【POJ】2503 Babelfish(字典树,map,指针)
  2. python怎么输入代码-如何编写python代码
  3. ns 25的L2TP模式×××配置
  4. mysqldump导出数据库视图_mysql数据库的基本操作:索引、视图,导入和导出,备份和恢复...
  5. swfupload 实例 php,文件上传之SWFUpload插件(代码)
  6. QueryPerformanceFrequency 和 QueryPerformanceCounter用法
  7. 中国移动开通eSIM 一号双终端将要取代传统SIM卡?
  8. C++笔记整理(参考整理自各大博客)
  9. sql交叉表查询_初学前端需要注意什么 SQL连接相关内容有哪些
  10. QtCreator导入yocto sdk记录
  11. 推进牛仔服装的高质量发展
  12. Amesim(七):amesim自带demo动力学模型研究
  13. 紫书刷题记录 UVa1572 自组合
  14. 官宣:华为云学院带你看AI
  15. 远程桌面连接方式造成键盘鼠标失效(UI自动化)
  16. 计算机网络安全及故障谢辞,计算机网络安全初探.pdf
  17. 三菱q系列plc 和电脑socket_组态王和三菱Q系列PLC以太网通信
  18. Delphi的多线程开发实例
  19. PHP接口API文档转换SDK【神器】
  20. 2023年1月伊凡梳理如何快速安装git并且配置本地gitee账号权限方便拉代码

热门文章

  1. php清除页面别人挂的马
  2. 典型相关分析(CCA)原理及例子
  3. Xshell 3.0序列号注册激活教程
  4. 安装包及教程:仿真工具Multisim12.0 简体中文汉化版 安装包及详细安装教程(含安装包和汉化包百度云盘链接)
  5. 多测师_设置 Linux 支持中文
  6. clone git 修改保存路径_SEO优化知识一般需要了解什么代码_学云网
  7. 电信网厅源码 php,基于php的电信基站接口调用代码实例
  8. myline java线段类,2008010 编写一个线段类 MyLine 联合开发网 - pudn.com
  9. opencms 发布过程深入研究
  10. 【论文笔记】DeepIGeoS:A Deep Interactive Geodesic Framework for Medical Image Segmentation