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 ...
随机推荐
- Python socket编程之四:模拟分时图
建立 socket,先运行服务器,再运行客户端,建立连接后服务器从本地数据库调数据一截一截地发送给客户端,客户端接受数据绘图模拟分时图 1.socket # -*- coding: utf-8 -*- ...
- UILable点击事件
UILabel *lLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 19, 105, 1)]; lLabel.backgroundColor ...
- cmd+lcx+nc+sc提权工具总结
cmd:执行命令的载体cmdshell lcx:端口映射工具 1.在自己的host上的cmd下运行:lcx.exe -listen 51 3389 //意思是监听51端口并转发到3389端口 2.在服 ...
- title及alt提示特效
<html> <head> <title>title及alt提示特效</title> <style type="text/css&quo ...
- C#验证是否是真的图片格式
做图片上传功能时,我们要限制用户上传的图片格式和大小. 但是,还有一种情况就是验证用户伪造的符合要求的图片,这种情况就必须要验证文件的真正格式. C#的办法时可以通过将文件读成二进制流,取前两个字节判 ...
- Git+Gradle+Eclipse构建项目
步骤: 1.安装好Git.解压gradle-2.14.zip免安装文件: 2.用SourceTree将GitLab上的项目拉取下来: 3.打开eclipse->Import->Gradle ...
- WebRequest中的工厂方法模式
- Array和ArrayList互相转换
class Order{ public string orderId; public string orderName; public decimal orderPrice; } public cla ...
- Rescue
1039: Rescue Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 1320 Solved: 306 Description Angel was c ...
- DLL注入之注册表
0x00 唠叨 编写本系列文章纯属为了系统学习DLL注入的方法,所以很多方法可能已经过时,希望各位看官勿喷.当然若有更好的方法,希望不腻赐教.若本文有任何错的地方,也希望各位指正.谢谢! 0x01 适 ...