• HyperLinkedModelSerializer继承ModelSerializer,只是自动多出了一个url字段,其他都是一样的
  • 不同之处在于使用超链接来表示关联关系而不是主键
  • 默认情况下HyperLinkedModelSerializer序列化器包含一个url字段
  • url字段使用HyperlinkedIdentityField字段表示,模型的任何关联都使用该字段
 #源码

 class HyperlinkedModelSerializer(ModelSerializer):

    serializer_related_field = HyperlinkedRelatedField

    def get_default_field_names(self, declared_fields, model_info):
# 覆盖重写了ModelSerializer中的方法
# 只是在 第一个变量使用了url名字
return (
[self.url_field_name] +
list(declared_fields) +
list(model_info.fields) +
list(model_info.forward_relations)
) def build_nested_field(self, field_name, relation_info, nested_depth):
# 覆盖重新ModelSerializer方法,嵌套的子类依然继承的是HyperLinkedModelSerializer
class NestedSerializer(HyperlinkedModelSerializer):
class Meta:
model = relation_info.related_model
depth = nested_depth - 1
fields = '__all__' field_class = NestedSerializer
field_kwargs = get_nested_relation_kwargs(relation_info) return field_class, field_kwargs
 
 #示例
# 继承HyperlinkedModelSerializer
class TextSerializer(HyperlinkedModelSerializer):
auth = AuthSerializer() class Meta:
model = Text
# 设置url字段
fields = ('url','id', 'title', 'content', 'auth', 'category', 'created')
 
原来category的值是 对应的id 1和2,现在是对应的超链接,点击可以直接跳到对应分类
 
修改url字段名

'''
使用HyperLinkedModelSerializer生成的url,字段名默认是url
如果想要修改的话需求在setting中指定,比如我们要把url字段名改成to_link
'''
REST_FRAMEWORK = {
'URL_FIELD_NAME':'to_link'
}
 

最新文章

  1. 010-Scala单例对象、伴生对象实战详解
  2. React(JSX语法)-----JSX基本语法
  3. python——socket网络编程
  4. Mac OS 的一点历史: Mac OS, Mac OSX 与Darwin
  5. RecyclerView+CardView简单使用
  6. C#代码像QQ的右下角消息框一样,无论现在用户的焦点在哪个窗口,消息框弹出后都不影响焦点的变化,那么有两种方法
  7. SSH_框架整合6--修改Edit员工信息
  8. Swift学习链接
  9. MyEclipse保存文件时 自动格式化代码! 不包括文档注释
  10. webstorm入门1-主题和配色
  11. OCP解决问题053-16 MEMORY_TARGET
  12. CSV文件格式分析器执行:从字符串Split至FSM
  13. 石头剪刀布 OpenJudge 1.6.08
  14. [HDU1020] Encoding - 加密
  15. JVM-类的四种载入方式
  16. nmap简介和使用
  17. 开发十年,只剩下这套Java开发体系了 原
  18. python 爬虫 requests+BeautifulSoup 爬取巨潮资讯公司概况代码实例
  19. 原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现
  20. Salesforce自定义权限简介

热门文章

  1. nginx代理与反向代理原理
  2. C# 创建标签PDF文件
  3. 认识Vue扩展插件
  4. 给博客添加个充电按钮(仿B站)
  5. Redis图形化管理工具
  6. [双重 for 循环]打印一个倒三角形
  7. React版/Vue版都齐了,开源一套【特别】的后台管理系统...
  8. Centos下使用containerd管理容器:5分钟从docker转型到containerd
  9. kibana访问多个 Elasticsearch 节点间的负载均衡
  10. centos系统安装MySQL8