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)
posted @   忘川的彼岸  阅读(365)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示