【发布时间】:2021-11-15 14:18:56
【问题描述】:
我正在尝试制作一个表格,用于按用户提供的列、条件和文本过滤表格。(不需要文本) 例如,用户选择一列,大于、小于、等于等。
表格
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)
浏览量
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 可以在不刷新页面的情况下更新页面。网上有很多教程教你如何在 Django 中使用 JavaScript。