这是我的观点:
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')