如何在django-tables上使用django滤波器2



这是我的观点:

class PersonalView(SingleTableMixin, FilterView):
    model = Invoice
    template_name = 'invProj/index.html'
    table_class = InvoiceTable
    filterset_class = InvoiceFilter
    context_object_name = 'invoice'
    ordering = ['invoice_due_date']
    def get_table_data(self):
        return Invoice.objects.filter(invoice_owner__username=self.request.user).order_by('i
nvoice_due_date')

现在,get_table_data做正确的事情,发票会根据用户过滤。但是,InvoiceFilter(django_filters.FilterSet)当时不起作用。确实有效,但是,当我不覆盖 get_table_data时。

现在,过滤器(如正常(出现并正常传递,只是不要过滤。它总是根据get_table_data显示数据,无论我输入哪个过滤器字符串。

我该如何获得全部?我想定义我的custum表数据让我的定义过滤器可以使用。

好吧,我自己想出来...

我不得不像

那样覆盖get_table_data,而是覆盖get_queryset
def get_queryset(self):
    qs = Invoice.objects.filter(invoice_owner__username=self.request.user).order_by('invoice_due_date')
    return qs

您是否尝试过将table_data属性添加到类中,而不是覆盖get_table_data

编辑:我认为您应该覆盖get_filterset功能。这样的东西:

    def get_filterset(self, filterset_class):
        filterset = super().get_filterset(filterset_class)
        return filterset.filter(invoice_owner__username=self.request.user).order_by('i
nvoice_due_date')

相关内容

  • 没有找到相关文章

最新更新