• Vue 获取后端多对多关联表信息


    前端给后端表添加一个自定义字段

    class UserViewSet(viewsets.ModelViewSet):
        """
        完成产品的增删改查
        """
        queryset = User.objects.all()
        serializer_class = UserSerializer # 优先使用 get_serializer_class 返回的序列化器
        # # 1.认证:自定义认证类, 自定义会覆盖全局配置
        authentication_classes = (BasicAuthentication, SessionAuthentication)
        # 2.权限:自定义权限类
        # permission_classes = (MyPermission,)
        # 3.分页:自定义分页器 覆盖全局配置
        pagination_class = PageNum
        # 4.限流:自定义限流类
        throttle_classes = [UserRateThrottle]
        # 5.过滤:指定过滤方法类, 排序方法类, 一个或多个
        filter_backends = (DjangoFilterBackend, OrderingFilter)  # 同时支持过滤和排序
        # 5.1指定排序字段, 不设置, 排序功能不起效
        ordering_fields = ('date_joined', 'id')  # ?ordering=-id
        # 5.2指定过滤字段, 不设置, 过滤功能不起效
        filter_fields = ('username', 'mobile',)  # ?username = tom & phone = & is_active = true
    
        # 根据不同的请求, 获得不同的序列化器
    
        def get_serializer_class(self):
            if self.action == 'unactived':
                return UserUnActiveSerializer
            else:
                return UserSerializer
    
        @action(methods=['get'], detail=False)
        def unactived(self, request, *args, **kwargs):
            # 获取查询集, 过滤出未激活的用户
            qs = self.queryset.filter(is_active=False)
            # 使用序列化器, 序列化查询集, 并且是
            ser = self.get_serializer(qs, many=True)
            return Response({"code":200,"msg":"成功","data":ser.data})
    
        @action(methods=['get'], detail=False)
        def actived(self, request, *args, **kwargs):
            # 获取查询集, 过滤出未激活的用户
            qs = self.queryset.filter(is_active=True)
            # 使用序列化器, 序列化查询集, 并且是
            ser = self.get_serializer(qs, many=True)
            return Response({"code":200,"msg":"成功","data":ser.data})
    
       #自定义字段多添加一个字段,这个字段表里不存在    
        def perform_create(self, serializer):
            user_obj = serializer.save()
            role_ids = self.request.data.get('choiseRole')
            if role_ids:
                for role_id in role_ids:
                    UserRole.objects.create(user_id=user_obj.id, role_id=role_id)
    Views.py
    class UserSerializer(serializers.ModelSerializer):
    
        def validate(self,attrs):
            return attrs
        class Meta:
            model=User
            fields='__all__'
            read_only_fields=('',)
            extra_kwargs={
                "address":{
                    "min_length":5,
                    "default":"默认测试地址"
                }
            }
    
        filter_fields = ('username',)
    serializers.py
    from django.contrib.auth.models import AbstractUser
    # Create your models here.
    
    
    
    class User(AbstractUser):
        """用户信息"""
        username=models.CharField('用户名字',max_length=32,unique=True)
        password=models.CharField('用户密码',max_length=128)
        mobile=models.CharField('手机号',max_length=20,null=True,blank=True)
        email = models.EmailField('邮箱',null=True,blank=True)
    models.py
  • 相关阅读:
    opencv+python实时人脸检测、磨皮
    opencv人脸检测
    均值模糊、中值模糊、自定义模糊
    双边滤波
    表面模糊
    水纹滤镜
    爬取https网站
    字符串、数组、切片、map
    tcpdump抓包和Wireshark解包
    iptables详解
  • 原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14046041.html
Copyright © 2020-2023  润新知