DRF如何序列化外键的字段
我觉得在有些应用场景下,这个操作是有用的,因为可以减少一个AJAX的请求,以增加性能。
当然,是二次请求,还是一次传输。这即要考虑用户体验,还要兼顾服务器性能。
一切是有条件的平衡吧。就算是一次传输,字段少的可以全部传,而字段多的就要自定义啦。
在以下样例里,发布单是主表,但相关的项目,组件,用户,如果默认情况下,只显示ID,很不友好。
我们可以将相关的外键名称也一并序列化啦。
重点的DRF:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'first_name', 'last_name', 'is_superuser')
class SiteSerializer(serializers.ModelSerializer):
class Meta:
model = Site
fields = ('id', 'name')
class AppSerializer(serializers.ModelSerializer):
class Meta:
model = App
fields = ('id', 'name')
class DeployPoolSerializer(serializers.ModelSerializer):
site = SiteSerializer(source='site_name') #如有问题,记得那个read_only,many之类的参数,然后看官方文档
app = SiteSerializer(source='app_name')
create_user = UserSerializer()
class Meta:
model = DeployPool
fields = ('id', 'name', 'description', 'site', 'app', 'branch_build',
'jira_issue_no', 'create_user', 'change_date')
read_only_fields = ('name',)
angular服务和控制器:
prismVersion.factory("versionSrv", ['$resource', function ($resource) {
return $resource(
"http://127.0.0.1:8000/server_api/version_api/:Id",
{Id: "@Id" },
{'query': {method: 'GET' }},
{update: {method: "PUT"}}
);
}]);
prismVersion.factory("siteSrv", ['$resource', function ($resource) {
return $resource(
"http://127.0.0.1:8000/server_api/site_api/:Id",
{Id: "@Id" },
{'query': {method: 'GET' }},
{update: {method: "PUT"}}
);
}]);
prismVersion.controller('versionCtrl',
['$scope','versionSrv','siteSrv',
function($scope,
versionSrv, siteSrv){
$scope.versions = versionSrv.query();
}]);
angular显示:
<tr ng-repeat="item in versions.results">
<td>
<a href="#" target="_blank">{{item.id}}-{{item.name}}</a>
</td>
<td>
<a href="#">
{{item.app.id}}-
{{item.app.name}}
</a>
</td>
<td>
<a href="#">
{{item.site.id}}-
{{item.site.name}}
</a>
</td>
<td>
{{item.branch_build}}
</td>
<td>
<a href="#">
{{item.jira_issue_version}}
</a>
</td>
<td>
{{item.create_user.id}}-
{{item.create_user.username}}
</td>
<td>
{{item.change_date}}
</td>
</tr>
LOOK:

DRF如何序列化外键的字段的更多相关文章
- MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结
1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...
- django rest framework如何实现nest field显示,如何保存有外键的字段更新
一步一步深入了. 相关设置技巧如下: 直接nest field显示: class VersionPoolSerializer(serializers.ModelSerializer): site_na ...
- DRF 外键字段深度查询优化、ListSerializer辅助完成群改
目录 一.Response封装 二.外键字段深度查询 1.序列化配置exclude.depth 2.模型层函数.插拔式字段查询 三.listserializer辅助类 一.Response封装 用de ...
- DRF 有无外键操作实例
models.py from django.db import models # Create your models here. class Category(models.Model): &quo ...
- MS SQL巡检系列——检查外键字段是否缺少索引
前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...
- 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法
1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...
- 2-16 MySQL字段约束-索引-外键
一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...
- mysql字段约束-索引-外键---3
本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table wo ...
- mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)
字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...
随机推荐
- ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
这个编辑器按脚本分主要有4个版本,ASP/ASPX/PHP/JSP 每个版本都有可以利用的漏洞.判断网站是否使用了eWebEditor查看程序源代码,看看源码中是否存在类似”ewebeditor.as ...
- 优化sql语句
关于数据库sql语句的优化? 这个链接可以看 涉及数据库的操作基本都是变得很慢了, 所以通常说数据库是程序的瓶颈 测试/优化数据库/sql的方法: 把order排序.where条件等一个一个去除法来做 ...
- 前端框架react研究
摘要: 最近公司要做一个嵌套在app中的应用,考虑着用Facebook的react来开发view,所以就研究了下.下面是我在开发中遇到的坑,希望能给你帮助. 项目地址:https://github.c ...
- matlab figure 论文级别绘图
1.将figure调整为最大: figure;set(gcf,'outerposition',get(0,'screensize')); 2.获得figure中的大小 [x,y] = ginput 3 ...
- Y2K Accounting Bug(贪心)
Y2K Accounting Bug Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10945 Accepted: 54 ...
- 使用多种方式实现遍历HashMap
今天讲解的主要是使用多种方式来实现遍历HashMap取出Key和value,首先在java中如果想让一个集合能够用for增强来实现迭代,那么此接口或类必须实现Iterable接口,那么Iterable ...
- [Effective JavaScript 笔记]第57条:使用结构类型设计灵活的接口
想象创建wiki的库.wiki网站包含用户可以交互式地创建.删除和修改的内容.许多wiki都以简单.基于文本标记语言创建内容为特色.通常,这些标记语言只提供了HTML可用功能的一个子集,但是却有一个更 ...
- Kalendar server Beijing Tiandiyuandian Technology Limited 果然是木马
我的Windows 7 系统,在开始菜单里面输入msconfig ,回车打开系统配置,隐藏所有Microsoft的进程,在服务和启动项里面都有 Kalendar server Beijing Ti ...
- glut64位操作系统安装
64位win7下OpenGL的配置 - walkandthink的专栏 - 博客频道 - CSDN.NEThttp://blog.csdn.net/walkandthink/article/detai ...
- Leetcode 之Convert Sorted List to Binary Search Tree(55)
和上题思路基本一致,不同的地方在于,链表不能随机访问中间元素. int listLength(ListNode* node) { ; while (node) { n++; node = node-& ...