python - Django-filter 'icontains' 没有传递给我的 URL
问题描述
我正在使用 3rd-party Django-filter 为我的博客文章制作搜索栏。
import django_filters
from .models import Post
from django.db import models
class PostFilter(django_filters.FilterSet):
title = django_filters.CharFilter(field_name='title')
class Meta:
model = Post
fields = {
'title': ['icontains'],
}
#I've tried using filter_overrides to no success
filter_overrides = {
models.CharField: {
'filter_class': django_filters.CharFilter,
'extra': lambda f: {
'lookup_expr': 'icontains',
},
}
}
我读到 CharFilter 和 TextFilter 默认为精确,但我认为我在下面更改了它。我试过包含和图标。搜索传递到 url,例如:“...blog/?title=foo”。我手动输入了“.../blog/?title__icontains=foo” url,这有效,但是工作 url 不是当我单击搜索按钮时正在传递的 url。任何帮助将不胜感激,谢谢。
*编辑:需要明确的是,过滤器正在工作,但它的工作方式好像是“精确”而不是“包含”。它会找到结果,但前提是我搜索完整标题
解决方案
哈利,
您是否尝试过 django-filter 定义的覆盖?
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = {
'name': ['exact'],
'release_date': ['isnull'],
}
filter_overrides = {
models.CharField: {
'filter_class': django_filters.CharFilter,
'extra': lambda f: {
'lookup_expr': 'icontains',
},
},
models.BooleanField: {
'filter_class': django_filters.BooleanFilter,
'extra': lambda f: {
'widget': forms.CheckboxInput,
},
},
}
推荐阅读
- java - 如何在android studio中添加公钥和私钥?
- jmeter - 覆盖授权标头
- c++ - 交叉编译找不到某些库
- java - Mockito 简化我的(复杂的)测试
- node.js - Multi Upsert ArangoDB
- unix - 詹金斯作业执行问题
- sql - 存储过程有多个 SELECT 语句
- flutter - 为什么只有部分图标在使用 Shader Mask 时出现渐变
- apache-spark - 在启用了 spark 身份验证和加密的 spark 独立集群上,无法通过 spark-submit 杀死 spark 应用程序
- php - 如何在 CakePHP 身份验证插件中结合本地登录和谷歌登录?