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
原文地址:https://www.cnblogs.com/xiaoxiamiaichiyu/p/14046041.html