当用户更改下拉过滤器中的值时,Django过滤更新查询

Posted

技术标签:

【中文标题】当用户更改下拉过滤器中的值时,Django过滤更新查询【英文标题】:Django filters update query when user changes value in dropdown filter 【发布时间】:2021-02-09 03:07:42 【问题描述】:

我有一个适用于我的模型的过滤器,它是该列中所有值的select。我想这样当用户从select 中选择一个值时,它会自动过滤数据,而无需提交按钮。我相信我需要 select 字段的 onclick 属性,但我不知道如何为过滤器表单设置它。

filters.py

import django_filters
from django_filters import CharFilter, AllValuesFilter

from .models import *


class SetFilter(django_filters.FilterSet):
    name = CharFilter(field_name='name', lookup_expr='icontains', label='', )
    type = AllValuesFilter(field_name='type', choices=Set.objects.values_list('type', flat=True).distinct(), label='', )

    class Meta:
        model = Set
        fields = ''
        exclude = ['']

sets.html:

<td class="d-none d-xl-table-cell"> myFilter.form.type </td>

【问题讨论】:

【参考方案1】:

您需要使用jquery 或纯javascript 对用户操作做出反应。 这是 jQUERY 的代码

$(document).ready(function() 
    $('#id_type').bind('change', function(event) 
        $('#you_form_id').trigger("submit");
    );
);

这里我们检查用户何时更改字段type,然后自动提交过滤表单

【讨论】:

以上是关于当用户更改下拉过滤器中的值时,Django过滤更新查询的主要内容,如果未能解决你的问题,请参考以下文章

状态更改后的 Bootstrap Dropdown 更新位置

当搜索过滤器值从javascript更改时,智能表不会更新[重复]

Django admin 中的自定义相关下拉菜单

当浏览器中的值更改时如何刷新 django 管理表单?

以编程方式更改值时触发 Dojo Select onChange 事件

当数组只有一个值时处理条件逻辑,即使它是一个空字符串?