【问题标题】:django forms for filtering用于过滤的 django 表单
【发布时间】: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。

标签: django forms filter


【解决方案1】:

我建议您使用 JavaScript 库,例如 datatable
您的 Django 视图将使用所有条目填充表格,并且您将拥有一个用户友好的界面,可以在客户端根据用户的喜好搜索、过滤、排列数据,而无需调用后端。如果需要,它还支持 Ajax 处理。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 2012-01-24
  • 2014-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多