django表单用于过滤



我正试图通过其列,条件和用户给出的文本过滤表的形式。(无须输入文字)例如,用户选择一个列,greater,less, equals等

class FilterForm(forms.Form):
COLUMN_FILTER_CHOICES = (
('title', 'Title'),
('quantity', 'Quantity'),
('distance', 'Distance'),
)
CONDITION_FILTER_CHOICES = (
('equals', 'Equals'),
('contains', 'Contains'),
('greater', 'Greater'),
('lower', 'Lower'),
)
search = forms.CharField(required=False)
column_filter_field = forms.ChoiceField(choices=COLUMN_FILTER_CHOICES)
condition_filter_field = forms.ChoiceField(choices=CONDITION_FILTER_CHOICES)
<<p>视图/em>
class TableView(ListView):
model = Table
template_name = 'spa/index.html'
context_object_name = 'table'
paginate_by = 5
def get_queryset(self):
query = self.request.GET.get('search')
column_filter_field = self.request.GET.get('column_filter_field')
condition_filter_field = self.request.GET.get('condition_filter_field')
return Table.objects.all()
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
context['tables'] = Table.objects.all()
context['form'] = FilterForm(initial={
'search': self.request.GET.get('search', ''),
'column_filter_field': self.request.GET.get('column_filter_field', ''),
'condition_filter_field': self.request.GET.get('condition_filter_field', ''),
})
return context

模板

<form action="" method="get" class="inline">
{% csrf_token %}
{{ form.column_filter_field }}
{{ form.condition_filter_field }}
{{ form.search }}
<input type="submit" class="btn btn-default" value="Search">
</form>

表单现在正在工作,但是表单没有响应。

和我需要刷新我的表在没有更新页面的实时,我找不到任何信息来过滤实时,是可能的与django?

我建议你使用一个javascript库,比如datatable。
你的Django视图将用所有的条目填充表,你将有一个用户友好的界面来搜索、过滤、安排数据,在客户端,而不需要调用后端。如果需要,它还支持Ajax处理。

最新更新