当用户更改下拉过滤器中的值时,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更改时,智能表不会更新[重复]