Это мое мнение:
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 а также, чтобы мои определенные фильтры работали над этим.





Вы пробовали добавить атрибут 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')
Конечно, super встроен в функцию, только что здесь допущена «опечатка». Отредактировал мой ответ, надеюсь, что это сработает;)
нет, он дал: объект «InvoiceFilter» не имеет атрибута «фильтр». В любом случае, как я уже сказал, я решил это с помощью get_queryset. (просто пока не могу принять свой ответ)
Ладно, я сам разобрался ...
Вместо переопределения 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
что дает Объект PersonalView не имеет атрибута super Nevermind, я нашел решение. См. ниже. Тем не менее, спасибо за ваши усилия! :)