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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM