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

一步一步深入了。

相关设置技巧如下:

直接nest field显示:

class VersionPoolSerializer(serializers.ModelSerializer):
    site_name = serializers.ReadOnlyField(source='site_name.name')
    dep_version = DeployPoolSerializer(many=True, required=False, read_only=True)
    create_user = serializers.ReadOnlyField(source='create_user.username')

    class Meta:
        model = VersionPool
        fields = ('id', 'name', 'site_name', 'dep_version', 'create_user', 'add_date')

如何自定义更新有外键的记录:

class VersionPoolViewSet(viewsets.ModelViewSet):
    """
    This viewset automatically provides `list`, `create`, `retrieve`,
    `update` and `destroy` actions.

    Additionally we also provide an extra `highlight` action.
    """
    queryset = VersionPool.objects.all()
    serializer_class = VersionPoolSerializer
    authentication_classes = (TokenAuthentication,)
    paginate_by = 10

    def get_queryset(self):
        print (self.request.user, '##################')
        print(self.request.auth, '##################')
        queryset = self.queryset
        return queryset

    def create(self, request, *args, **kwargs):
        name = request.data['name']
        site_name = request.data['site_name']
        validated_data = dict()
        validated_data['name'] = site_name + "-" + name
        validated_data['site_name'] = Site.objects.get(name=site_name)
        validated_data['create_user'] = request.user
        try:
            VersionPool.objects.create(**validated_data)
            response_data = {
                'name': site_name + "-" + name,
                'create_user': request.user.username,
                'message': 'version item save success.'
            }
            return Response(response_data, status=status.HTTP_201_CREATED)
        except:
            response_data = {
                'name': site_name + "-" + name,
                'create_user': request.user.username,
                'message': 'version item save failed.'
            }
            return Response(response_data, status=status.HTTP_400_BAD_REQUEST)

时间: 2024-12-04 19:56:33

django rest framework如何实现nest field显示,如何保存有外键的字段更新的相关文章

Django REST framework 的TokenAuth认证及外键Serializer基本实现

  一,Models.py中,ForeignKey记得要有related_name属性,已实现关联对象反向引用. app_name = models.ForeignKey("cmdb.App",related_name='deploy_app', verbose_name="App")   二,Settings.py文件中,加入对Django REST framework的基本设置. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CL

解决一个Django Rest Framework的JSON输出的小问题

  在服务器升级迁移过程中,遇到一个见了鬼的问题. 同样的一个API输出,在本机测试时和生产中一台机器上的输出为纯数据的json格式. 而在另一台生产机器上却为加了统计和跳转信息的另一种json格式. 由于前端用了vue.js作了数据的加载,如果同样的代码,那获取json中对象的信息显然就会发生问题. 解决BUG的时间来不及,也无法深入调试.可用以下代码,判断json中是否有存在对象来进行对象的赋值,可解决这个输出问题. 以后找时间还是深入研究一下这个DRF的输出机制吧. //此处兼容djang

通用数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页通用

程序|分页|关键字|数据|数据库|显示 数据库显示程序,能调任意库,任意字段,多关键字搜索,自动分页. 阿余经常写一些数据库相关的程序,当然离不开显示库中的数据了,说实话,做这样的程序真是无聊啊,所以,阿余就想写个函数,一个通用的数据库显示函数.要求如下:   1. 能显示指定的字段,当然,字段名和显示的文字可以不一样.  2. 能同时按多个字段进行查询,支持模糊和精确两种查询方式.  3. 有横向排列和纵向排列字段两种显示方式.  4. 能自动分页.  5. 能设定每页显示多少条记录.好啦,要

如何在DJANGO里,向有外键(一对多和多对多)的DB里插入数据?

需要插入的数据表结构如下:   [python] view plaincopy   class UserInfo(models.Model):       user_id =models.AutoField(primary_key=True)       user_name=models.CharField(max_length=20,unique=True)        depart=models.ForeignKey(DepartmentInfo)       role=models.Ma

jsp-JSP,MVC查询外键所在表中的其他内容并放入list中在前台页面显示数据

问题描述 JSP,MVC查询外键所在表中的其他内容并放入list中在前台页面显示数据 VO中的字段 Emp private String id; private String e_id; private String e_head; private String e_name; private String e_sex; private Dep d_id; private String e_tell; private String e_address; Dep private String d_

entity framework-Enity framework 向一个有外键的table插入数据

问题描述 Enity framework 向一个有外键的table插入数据 Enity framework 怎么向一个有外键的table插入数据. 比如一个student表: Id(主键) Name ClassId(外键,Class表的主键) 一个Class表: Id(主键,student的外键) Name 当我用ef(版本3.5)插入一条student记录时,例如 (1,小明,一班)注:"一班"这个数据存在于class表中. 这时ef会先去class表中插入"一班"

求教 :不用OFFICE组件,实现解析、显示、保存Word文档

问题描述 有一项目,要求在不使用OFFICE组件的情况下,来用C#实现解析.显示.保存Word文档.请问各位能否实现.或者在哪里能找到C#这方面的开源代码呢?谢谢- 解决方案 解决方案二:这个项目的需求比较有难度.解决方案三:http://wenku.baidu.com/view/22e2bb10cc7931b765ce1599.html

Django Rest Framework 3.3.2 开发 RESTful API

Python Version:     2.7.10Django Version:     1.9REST framework 3.3.2 安装 pip install django pip install djangorestframework settings.py INSTALLED_APPS中引入rest_framework INSTALLED_APPS = [     'django.contrib.admin',     'django.contrib.auth',     'dja

关于django rest framework里token auth的实现及答疑

http://stackoverflow.com/questions/14838128/django-rest-framework-token-authentication ================================================ No, not in your models.py -- on the models side of things, all you need to do is include the appropriate app (rest