我觉得在有些应用场景下,这个操作是有用的,因为可以减少一个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如何序列化外键的字段的更多相关文章

  1. MySql数据库在表中添加新字段,设置主键,设置外键,字段移动位置,以及修改数据库后如何进行部署和维护的总结

    1,为当前已有的表添加新的字段 alter table student add studentName varchar(20) not null; 2,为当前已有的表中的字段设置为主键自增 alter ...

  2. django rest framework如何实现nest field显示,如何保存有外键的字段更新

    一步一步深入了. 相关设置技巧如下: 直接nest field显示: class VersionPoolSerializer(serializers.ModelSerializer): site_na ...

  3. DRF 有无外键操作实例

    models.py from django.db import models # Create your models here. class Category(models.Model): &quo ...

  4. MS SQL巡检系列&mdash;&mdash;检查外键字段是否缺少索引

    前言感想:一时兴起,突然想写一个关于MS SQL的巡检系列方面的文章,因为我觉得这方面的知识分享是有价值,也是非常有意义的.一方面,很多经验不足的人,对于巡检有点茫然,不知道要从哪些方面巡检,另外一方 ...

  5. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  6. 2-16 MySQL字段约束-索引-外键

    一:字段修饰符 1:null和not null修饰符 我们通过这个例子来看看 mysql> create table worker(id int not null,name varchar(8) ...

  7. mysql字段约束-索引-外键---3

    本节所讲内容: 字段修饰符 清空表记录 索引 外键 视图 一:字段修饰符 (约束) 1:null和not null修饰符   我们通过这个例子来看看 mysql> create table wo ...

  8. mysql之字段的修改,添加、删除,多表关系(外键),单表详细操作(增删改)

    字段的修改.添加和删除 create table tf1( id int primary key auto_increment, x int, y int ); #修改 alter table tf1 ...

  9. drf框架 - 序列化组件 | ModelSerializer (查,增,删,改)

    ModelSerializer 序列化准备: 配置 settings.py # 注册rest_framework框架 INSTALLED_APPS = [ ... 'rest_framework' ] ...

随机推荐

  1. 谷歌地图地理解析和反解析geocode.geocoder详解

    地址解析就是将地址(如:贵州省贵阳市)转换为地理坐标(如经度:106.71,纬度:26.57)的过程. 地理反解析和上面的过程相反是将地理坐标(如纬度:26.57,经度:106.71)转换为地址(中国 ...

  2. Linux Qt动态库的创建和使用

    一.创建动态库 编写一个共享库类,比如: //..base.h class Base : public QObject { Q_OBJECT public: ); void PrintLog(QStr ...

  3. 201521123089 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1.2 选做:收集你认为有用的代码片段 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4 ...

  4. 真正的ddos防御之道,简单干脆有效!

    话说,30G 就各种发博客 BB,唉,坦白说 ,博客园团队真心没见过世面 来 各位 先看图 啥意思呢? 就是哥的 最高防御是 600G.  没错,基本对当时的游戏没啥大的影响,10秒内恢复. 因为时间 ...

  5. Pycharm自动添加文件头

    Pycharm自动添加文件头 在编程的时候,我们往往需要在文件头里添加一些编码和作者信息,在Pycharm中,系统给我们自带了这一功能,可以做如下设置: 打开设置 在设置中找到如下选项: 然后在编辑框 ...

  6. 第三个Sprint冲刺第4天

    成员:罗凯旋.罗林杰.吴伟锋.黎文衷 讨论内容:各成员汇报各自完成的情况.

  7. ipython是python的交互式shell工具

    ipython: 是python的交互式shell工具,比默认的python shell工具要好用.支持变了自动补全,自动缩进,内置了很多的功能和函数 启动:可以通过cmd来启动该工具 自动补全: I ...

  8. Oracle 12C -- ADR结构

    ADR路径由参数diagnostic_dest参数决定: SQL> show parameter diagnostic_dest NAME TYPE VALUE ---------------- ...

  9. 1041 Be Unique (20 分)

    1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...

  10. MIME类型释义--MIME类型大全--web.xml中有关&lt;mime-mapping&gt;配置说明

    最早的HTTP协议中,并没有附加的数据类型信息,所有传送的数据都被客户程序解释为超文本标记语言HTML 文档,而为了支持多媒体数据类型,HTTP协议中就使用了附加在文档之前的MIME数据类型信息来标识 ...