zoukankan      html  css  js  c++  java
  • DRF 筛选

    from rest_framework.generics import ListAPIView,CreateAPIView,UpdateAPIView,RetrieveAPIView,DestroyAPIView
    from rest_framework.filters import BaseFilterBackend
    from rest_framework import serializers
    from rest_framework.pagination import PageNumberPagination
    from newapi import models
    
    class ArticleSerializer(serializers.ModelSerializer):
        author_name = serializers.CharField(source="author.username",required=False)
        class Meta:
            model = models.Article
            exclude = ['author']
            
    class ArticleFilter(BaseFilterBackend):
        """
        查询:根据URL中的cagetory参数查询
        """
        def filter_queryset(self, request, queryset, view):
            val = request.query_params.get('cagetory')
            if val:
                return queryset.filter(category = val)
            return queryset
    
    class ArticleView(ListAPIView,CreateAPIView):
        # queryset对象
        queryset = models.Article.objects.all()
        # 序列化
        serializer_class = ArticleSerializer
        # 筛选规则
        filter_backends = [ArticleFilter,]
        # 分页
        pagination_class = PageNumberPagination
    
        def perform_create(self,serializer):
            serializer.save(author_id=2)
    
  • 相关阅读:
    纸牌排序
    将年份转换成天干地支
    猜算式
    字符串的简单处理
    九宫格填数字
    扫雷
    嗨喽
    Input.GetAxis与Input.GetAxisRaw区别
    C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
    开发游戏所需知识(知乎转载)
  • 原文地址:https://www.cnblogs.com/os-linux/p/11815382.html
Copyright © 2011-2022 走看看