python - Django-filter 'icontains' 没有传递到我的 URL

标签 python django django-filter

我正在使用第 3 方 Django 过滤器为我的博客文章创建搜索栏。

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 默认为精确的,但我认为我正在下面更改它。我尝试过 contains 和 icontains。 搜索传递到 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,
            },
        },
    }

关于python - Django-filter 'icontains' 没有传递到我的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58115515/

相关文章:

django - 使用过滤器集过滤带有日期字段的日期时间字段

python - SQLAlchemy:树节点中的递归混合属性

python - 自定义 django auth 后端不使用基本登录 View 记录用户

python - 在 django 中,由于找不到模块而发生导入错误

python - Django 过滤器中用于比较字符串的 "In"或 "reverse contains"查询

python - Django-Filter:为 bool 字段创建复选框

python - 查找对(连接)的组合

python - pygame 中动画的并行显示更新

python - 使用 djangos manage.py 自定义命令启动守护进程服务?

django 管理员编辑模型选择/prefetch_related?