当前位置: 首页 > news >正文

Django-filter

准备工作

首先,确保你已经安装了django-filter包。如果没有,请使用以下命令安装:

pip install django-filter

然后,在你的settings.py文件中添加django_filters到INSTALLED_APPS列表中:

INSTALLED_APPS = [# ...'django_filters',
]

本机环境:

Django==3.2.15

django-filter==24.2

ps:安装的包是django-filter,但是在settings里面设置的却是django-filters。这也是蛮坑的一个点。

目的

一个TaskViewSet,带模型Task的,里面有两个自定义动作,一个是根据template_id过滤,一个是根据project_id过滤

filters.py:

那么我可以创建一个filters.py文件在应用目录中:

import django_filters
from .models import Taskclass TaskFilter(django_filters.FilterSet):class Meta:model = Taskfields = ['template_id', 'project_id']

注意如果过滤的字段本身就属于Task模型的字段,那么不用额外定义,如果过滤的条件字段不属于Task模型的字段,那么需要额外定义如下:
同时,如果想要定义精准过滤和模糊过滤,可以定义如下:

from django.db.models import Qfrom .models import BkHostclass BkHostFilter(django_filters.FilterSet):operator = django_filters.CharFilter(field_name='operator', method='filter_operator')class Meta:model = BkHostfields = {'host_id': ['exact'],'host_name': ['exact', 'icontains'],'host_innerip': ['exact', 'contains'],}def filter_operator(self, queryset, name, value):return queryset.filter(Q(operator__exact=value) | Q(operator__icontains=value))

其中icontains表示不区分大小写的模糊匹配。contains表示区分大小写的模糊匹配。

视图集

首先视图集本身要指定filter_class

class TaskViewSet(ModelViewSet):queryset = Task.objects.all()serializer_class = TaskSerializerlookup_field = "task_id"filter_class = TaskFilter

如果是自定义动作(即被@action装饰器修饰的)需要应用django-filter的话,需要在动作中再次手动指定

    @swagger_auto_schema(manual_parameters=[openapi.Parameter('template_id',openapi.IN_QUERY,type=openapi.TYPE_INTEGER,)])@action(detail=False, methods=["get"], url_path="list-by-template")def list_by_template(self, request):  # ……省略代码# 手动应用过滤器filterset = self.filter_class(request.GET, queryset=self.get_queryset())if not filterset.is_valid():return Response(filterset.errors, status=400)tasks = filterset.qs

如果是非自定义动作,可以直接如下使用:

tasks = self.filter_queryset(self.get_queryset())

路径匹配

注意django-filter会从路径参数中拿在filters.py中指定的字段。所以如上代码只接受路径:
http://{your-domain}:8000/tasks/list-by-template/?template_id=xxx

总结

如果是自定义动作,除非过滤条件比较复杂,不然不需要用django-filter,因为还要手动指定,比较复杂。

相关文章:

Django-filter

准备工作 首先,确保你已经安装了django-filter包。如果没有,请使用以下命令安装: pip install django-filter然后,在你的settings.py文件中添加django_filters到INSTALLED_APPS列表中: INSTALLED_APPS [# ...djang…...

文字悬停效果

文字悬停效果 效果展示 CSS 知识点 CSS 变量使用回顾-webkit-text-stroke 属性的运用与回顾 页面整体结构实现 <ul><li style"--clr: #e6444f"><a href"#" class"text">First</a></li><li style"--cl…...

[SWPUCTF 2022 新生赛]ez_1zpop(php反序列化之pop链构造)

[SWPUCTF 2022 新生赛]ez_ez_unserialize <?php class X {public $x __FILE__;function __construct($x){$this->x $x; }function __wakeup(){if ($this->x ! __FILE__) {$this->x __FILE__; }}function __destruct(){highlight_file($this->x);//flag is…...

2-1基于matlab的拉普拉斯金字塔图像融合算法

基于matlab的拉普拉斯金字塔图像融合算法&#xff0c;可以使部分图像模糊的图片清楚&#xff0c;也可以使图像增强。程序已调通&#xff0c;可直接运行。 2-1 图像融合 拉普拉斯金字塔图像融合 - 小红书 (xiaohongshu.com)...

Android基础-进程间通信

在Android系统中&#xff0c;跨进程通信&#xff08;IPC&#xff0c;Inter-Process Communication&#xff09;是实现不同应用程序或同一应用程序中不同进程间数据共享和交互的关键技术。Android提供了多种IPC机制&#xff0c;每种机制都有其特定的使用场景和优缺点。下面将详细…...

【微信小程序】uni-app 配置网络请求

原因 由于平台的限制&#xff0c;小程序项目中 不支持axios&#xff0c;而且原生的&#xff0c;wx.request()API功能较为简单&#xff0c;不支持拦截器等全局定制的功能。因此&#xff0c;建议在uni-app项目中使用 escook/request-miniprogram 第三方包发起网络数据请求。 步…...

SpringCash

文章目录 简介引入依赖常用注解application.yml使用1. 启动类添加注解使用方法上添加注解 简介 Spring Cache是一个框架&#xff0c;实现了基于注解的缓存功能底层可以使用EHCache、Caffeine、Redis实现缓存。 注解一般放在Controller的方法上&#xff0c;CachePut 注解一般有…...

小红书的文案是怎么写的?有啥套路么!

小红书文案是有自己的调性的&#xff0c;为什么别人的笔记轻轻松松就是爆款&#xff0c;而自己写的笔记却没有人看呢&#xff0c;小红书文案写作有啥套路&#xff1f; 接下来伯乐网络传媒给大家讲一讲&#xff0c;小红书文案写作揭秘&#xff1a;抄作业、拆解产品到种草笔记结…...

开放平台接口安全验证

文章目录 开放平台接口安全验证I 加签方式说明1.1 签名生成的通用步骤1.2 生成随机数算法1.3 举例1.4 签名校验工具II Header参数说明III 业务接口返回结构说明开放平台接口安全验证 统一使用sign签名验证,签名规则也会在本文档中,详细说明。请大家认真阅读。 向平台申请密码…...

【AI原理解析】— GPT-4o模型

目录 1. 统一架构设计 2. 端到端训练 3. 模态间的信息融合 4. 语音处理 5. 视频处理 6. 性能特点 7. 模型特点 8. 服务和免费政策 9. 实时推理能力 10. 高效的编码方式 11. 输出与反馈 1. 统一架构设计 GPT-4o采用单一的Transformer架构进行设计&#xff0c;将文本…...

Qt中图表图形绘制类介绍

接上篇介绍QChart 相关的类&#xff0c;本片主要在QChart 载体上进行图表图形绘制使用各种形状的图类。 一.QXYSeries类 QXYSeries类是QLineSeries折线图&#xff0c;QSplineSeries样条曲线图&#xff0c;QScatterSeries散点图的基类&#xff1b; QXYSeries类的使用都可以参考…...

nginx rewrite地址重写

常用的nginx正则表达式 ^匹配以...开头的字符串$匹配以...结尾的字符串^$^$表示空行*匹配前面的字符0次或者多次&#xff08;通配符*表示任意数量的任意字符&#xff09;匹配前面的字符1次或多次?匹配前面的字符0次或1次.匹配除了“\n”之外的任意单个字符&#xff0c;[.\n]表…...

java+vue3+el-tree实现树形结构操作

基于springboot vue3 elementPlus实现树形结构数据的添加、删除和页面展示 效果如下 代码如下&#xff0c;业务部分可以自行修改 java后台代码 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.daztk.mes.common.annotation.LogOperation…...

Oracle创建索引的LOGGING | NOLOGGING区别

在Oracle中&#xff0c;创建索引时的LOGGING和NOLOGGING选项主要影响索引创建过程中产生的重做日志&#xff08;redo log&#xff09;的数量。这两个选项对于性能和数据恢复能力有着显著的影响。以下是关于这两个选项的详细解释和区别&#xff1a; LOGGING 定义&#xff1a;当…...

GoogleDeepMind联合发布医学领域大语言模型论文技术讲解

Towards Expert-Level Medical Question Answering with Large Language Mod 这是一篇由Google Research和DeepMind合作发表的论文,题为"Towards Expert-Level Medical Question Answering with Large Language Models"。 我先整体介绍下这篇论文的主要内容&#x…...

Spark安装、解压、配置环境变量、WordCount

Spark 小白的spark学习笔记 2024/5/30 10:14 文章目录 Spark安装解压改名配置spark-env.sh重命名&#xff0c;配置slaves启动查看配置环境变量 工作流程maven创建maven项目配置maven更改pom.xml WordCount按照用户求消费额上传到spark集群上运行 安装 上传&#xff0c;直接拖拽…...

DeepSeek-V2-Chat多卡推理(不考虑性能)

TOC 本文演示了如何使用accelerate推理DeepSeek-V2-Chat(裁剪以后的模型,仅演示如何将权值拆到多卡) 代码 import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig from accelerate import init_empty_weights import sys from acce…...

算法题day42(补5.28日卡:动态规划02)

今天的动态规划都是二维的&#xff0c;与昨日不同。 一、刷题&#xff1a; 1.leetcode题目 62. 不同路径 - 力扣&#xff08;LeetCode&#xff09;&#xff08;medium,&#xff09; 解决&#xff1a; class Solution:def uniquePaths(self, m: int, n: int) -> int:dp …...

分治与递归

实验一&#xff1a;分治与递归 【实验目的】 深入理解分治法的算法思想&#xff0c;应用分治法解决实际的算法问题。 【实验性质】 验证性实验&#xff08;学时数&#xff1a;2H&#xff09; 【实验内容与要求】 1、设有n2k个运动员要进行网球循环赛。现要设计一个满足以…...

Spring中IOC容器

IoC IOC容器 IoC是一种设计思想&#xff0c;面向对象编程 Spring通过IoC管理所有Java对象的实例化和初始化&#xff0c;控制对象之间依赖关系 将IoC容器管理的Java对象称为Spring Bean&#xff0c;与new创建的对象没有区别 控制反转&#xff08;IoC Inversion of Controle&a…...

STM32 LWIP服务器内存泄漏踩坑实录:我是如何实现多客户端连接并稳定运行72小时的

STM32 LWIP服务器内存泄漏排查与多客户端连接优化实战 在嵌入式网络应用中&#xff0c;STM32结合LWIP协议栈构建TCP服务器是常见方案。但当系统需要支持多客户端并发连接并长期运行时&#xff0c;内存管理问题往往成为稳定性的最大威胁。本文将分享一个真实案例&#xff1a;如何…...

Python 爬虫数据处理:富文本爬虫内容格式化还原

前言 互联网平台发布的文章、资讯、公众号推文、论坛帖子、商品详情、教程文案等内容&#xff0c;普遍以富文本形式存在&#xff0c;融合文字、段落层级、换行缩进、加粗引用、列表排版、超链接、分段结构等多种格式元素。普通爬虫仅能抓取原始 HTML 源码或纯文本内容&#xf…...

创建虚拟机、

...

英雄联盟Akari助手:你的智能游戏伴侣完整指南,轻松提升游戏体验 [特殊字符]

英雄联盟Akari助手&#xff1a;你的智能游戏伴侣完整指南&#xff0c;轻松提升游戏体验 &#x1f680; 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolk…...

Real-ESRGAN-GUI完整指南:3个技巧让模糊图片变高清的免费AI工具

Real-ESRGAN-GUI完整指南&#xff1a;3个技巧让模糊图片变高清的免费AI工具 【免费下载链接】Real-ESRGAN-GUI Lovely Real-ESRGAN / Real-CUGAN GUI Wrapper 项目地址: https://gitcode.com/gh_mirrors/re/Real-ESRGAN-GUI 你是否曾为模糊的老照片感到惋惜&#xff1f;…...

Bebas Neue 开源字体技术解析:几何美学与多平台兼容性实现

Bebas Neue 开源字体技术解析&#xff1a;几何美学与多平台兼容性实现 【免费下载链接】Bebas-Neue Bebas Neue font 项目地址: https://gitcode.com/gh_mirrors/be/Bebas-Neue Bebas Neue 是一款基于 SIL Open Font License 1.1 许可证的开源显示字体&#xff0c;专为标…...

一文搞定!Robot Framework自动化测试从入门到实战(全栈)

1. Robot Framework初探&#xff1a;为什么选择它&#xff1f; 第一次接触Robot Framework&#xff08;简称RF&#xff09;是在五年前的一个企业测试项目中。当时团队需要快速搭建一套支持Web、API和移动端测试的自动化方案&#xff0c;而RF凭借其零编码门槛和全栈支持能力成为…...

【python因果库实战31】LaLonde 数据集匹配2

这里写目录标题使用匹配来估计结果并为 IPW 准备数据结论使用匹配来估计结果并为 IPW 准备数据 我们这里有一些担忧&#xff0c;即治疗组和对照组之间的数据可能过于不平衡&#xff0c;以至于无法进行可靠的推断。虽然原则上倾向得分加权可以纠正协变量的不平衡&#xff0c;但…...

告别Hello World!手把手教你用OllyDBG修改exe程序字符串(附完整操作截图)

逆向工程第一课&#xff1a;用OllyDBG实战修改程序字符串全流程 刚接触逆向工程的新手往往会被各种复杂工具和概念吓退。今天我们从最基础的字符串修改入手&#xff0c;用OllyDBG带你完成第一个逆向实战。不同于简单的"Hello World"打印&#xff0c;这次我们要直接修…...

直面2026检测算法:英文论文降AI实战,3款工具深度避坑盘点

赶稿季来临&#xff0c;英文长稿的AI率到底该怎么降&#xff1f;不少同学愁的头都要秃了&#xff0c;不要再一个词一个词的扣了&#xff0c;这不仅慢&#xff0c;还会把好好的学术英语改得支离破碎。 坦率的讲&#xff0c;真正聪明的降ai&#xff0c;绝对不是机械替换&#xf…...