使用 django-filter 检查并清除过滤器

2024-05-06

我在用Django 过滤器 http://django-filter.readthedocs.io过滤一个ListView如果应用了任何过滤器,希望显示“清除所有过滤器”链接。

由于过滤系统的通用性,我还没有找到实现此目的的直接方法。

到目前为止我唯一想到的就是返回常规查询集get_queryset如果请求中存在“清除”标志,则视图的方法,但这实际上并没有清除过滤器 - 它只是返回所有数据。

有人对此有解决方案/想法吗?

更新:解决方案

在 Jerin 发表评论后,我决定分两个部分解决这个问题:

有过滤器:

我检查请求中是否包含我在过滤器类中定义的任何字段。我的解决方案看起来有点不同,因为我使用的是基于类的视图,所以我将其抽象到混合中,但如果您使用简单的视图像这儿 http://django-filter.readthedocs.io/en/1.1.0/guide/usage.html#the-view,你可以这样做:

def product_list(request):
    f = ProductFilter(request.GET, queryset=Product.objects.all())
    has_filter = any(field in request.GET for field in 
set(f.get_fields()))

    return render(request, 'my_app/template.html', {
        'filter': f,
        'has_filter': has_filter
    })

清除所有过滤器:

一个简单的重定向到您的列表视图:

{% if has_filter %}
  <a href="{%  url 'products' %}">{% trans 'Clear all filters' %}</a>
{% endif %}

这是答案的混合版本(我的和Chris https://stackoverflow.com/users/682583/chris)

你可以放置一个Clear all filters按钮,这将重定向到您的默认 ListView (/host/end/point/)。 但一些non-filter parameters(例如pagination或其他)可能会出现在 URL 中。因此,更好的选择是检查 URL 中是否有任何过滤器字段,如果有,则显示过滤器清除链接

选择的解决方案是,

def product_list(request):
    f = ProductFilter(request.GET, queryset=Product.objects.all())
    has_filter = any(field in request.GET for field in set(f.get_fields()))

    return render(request, 'my_app/template.html', {
        'filter': f,
        'has_filter': has_filter
    })


并在模板中,

{% if has_filter %}
  <a href="{%  url 'products' %}">{% trans 'Clear all filters' %}</a>
{% endif %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 django-filter 检查并清除过滤器 的相关文章

  • 如何使用基于类的视图处理表单(通过 get 或 post)?

    我正在尝试学习基于类的视图 因为详细信息或列表视图并不那么复杂 我有一个搜索表单 我只想看看是否发送查询来显示结果 这是函数代码 不是我的 来自 django 书籍 def search page request form SearchFo
  • django jet 中的自定义徽标

    我目前正在尝试对 django 管理面板的皮肤进行一些定制 以使其更符合我们的品牌 目前我们使用 django jet 来美化管理面板 django jet 可以自定义 css html 吗 所有评论都说我应该更改一些 html 文件 但我
  • Django 不断迁移相同的外键

    我正在将现有数据库导入到它自己的 Django 项目中 我已经从数据库生成了初始模型 通过inspectdb 并且通过注释使 Django 能够一次控制每个表managed False表元设置中的行 我从简单的模型开始 在启用带有外键的表时
  • Django 中从 sqlite 迁移到 postgresql

    我想迁移自sqlite to PostgreSQL db 我安装了 postgresql 并在其 shell 上创建数据库 然后配置我的 django 设置如下 default ENGINE django db backends postg
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • ModelChoiceField 在提交表单时给出无效选择错误

    我想允许用户删除特定模型的关联外键列表 假设我们有这两个模型 class IceBox models Model class FoodItem models Model name models CharField icebox models
  • 从 S3 提供 Django 的静态文件和媒体文件

    我遇到了一个奇怪的问题 我不知道是什么原因造成的 这是我当前的配置 使用Heroku MEDIA URL media STATIC URL static STATICFILES DIRS os path join PROJECT DIR s
  • 在 django 1.7 上的数据迁移中,直到原子块结束后才能执行查询

    我有一个相当长的数据迁移 我正在执行此操作来纠正早期的错误迁移 其中某些行创建不正确 我试图根据旧列将值分配给新列 但是 有时这会导致完整性错误 发生这种情况时 我想扔掉导致完整性错误的那个 这是一个代码片段 def load data a
  • Django、模板、for 循环和循环

    tl 博士在底部 让我尝试解释一下我想要完成的任务 我有一个二维数组 我想以某种方式显示其内容 我想要 行 并且每行只能显示不超过三个 对象 因为缺乏更好的词 所以我想迭代该数组并在此过程中创建 HTML 我的想法是这样的 数组中的每个 三
  • Django REST Framework:何时创建超链接资源以及何时创建嵌套资源?如何发布嵌套资源?

    我正在使用 Django REST 框架构建 REST Web API 事情进展顺利 但我偶然发现了嵌套资源的问题 起初 REST API 中的所有关系都是超链接的 例如 一篇文章看起来像这样 path http api myproject
  • Django内联外键与父主键不匹配

    我需要一些帮助来解决使用内联表单的 django 错误 我似乎无法弄清楚这一点 如果我能在尝试验证之前弄清楚如何执行此操作 我可能可以强制插入 eventID 当我提交表单时 出现错误 Hidden field event The inli
  • Django dumpdata 和 loaddata 不适用于多对多中介模型

    我在以下模型上将 dumpdata 与 Django 1 2 3 一起使用 class Bar models Model class Foo models Model bars models ManyToManyField Bar thro
  • 带有用户信息的 Django Logger

    我只是好奇 是否可以放User内的信息formatters信息输入LOGGING配置在setting py 现在我只是将该信息放入要记录的消息中 但也许有一种方法可以将其设置为formatters争论 这是我的LOGGING现在的配置 LO
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解
  • Pickle django 查询?

    是否可以在数据库中腌制或以某种方式存储 django 查询 这是行不通的 u User objects all import cPickle pickled query cPickle dumps u and store the pickl
  • 更新到 Django 1.8 - AttributeError: django.test.TestCase 没有属性 'cls_atomics'

    我将 Django 1 7 项目更新为 Django 1 8 现在运行测试时出现错误 它们是 Django 的子类 django test TestCase Traceback most recent call last File env
  • Django - CreateView 具有多个模型

    我可以使用 Django 吗创建视图 https docs djangoproject com en 1 9 ref class based views generic editing django views generic edit C
  • 在 django 中自定义项目和应用程序模板

    我想自定义运行时创建的文件和文件夹 python manage py startapp appname 我发现一遍又一遍地做一些事情 我认为如果在创建新应用程序时存在我的自定义功能 那就太好了 您知道创建应用程序时可以在哪里自定义默认文件吗
  • django 模板 - 如何动态访问变量?

    假设我有一个具有以下上下文的 django 模板 data1 this is data1 data2 this is data2 data name data2 现在我知道了data name 假设它是 data2 是否可以用它来访问变量d
  • Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

    我正在尝试通过电子邮件激活用户 电子邮件有效 编码有效 我使用了 django1 11 中的方法 该方法运行成功 在 Django 1 11 中 以下内容成功解码为 28 其中 uidb64 b Mjg force text urlsafe

随机推荐