如何在django-tables2

时间:2018-03-29 13:35:54

标签: django python-3.x django-class-based-views django-tables2 django-filters

这是我的观点:

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表数据让我定义的过滤器在那里工作。

1 个答案:

答案 0 :(得分:0)

现在好了,我自己弄清楚了......

而不是覆盖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