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)
    
  • 相关阅读:
    对象实例化内存布局与访问定位
    方法区

    本地方法栈
    本地方法接口
    虚拟机栈
    程序计数器
    运行时数据区概述及线程
    自学》2.网页弹窗计算商品价格
    自学》1.用网站发邮件
  • 原文地址:https://www.cnblogs.com/os-linux/p/11815382.html
Copyright © 2011-2022 走看看