Django-filters 如何从 FilterSet 中的视图传递当前用户?

Django-filters how to pass current user from view inside FilterSet?

我有一个过滤器,我需要在其中访问 request.user。但是,Django-filter 不会通过它。我能够找出可能的 FilterSet 配置。 但是如何从 FilterSet 中的视图传递当前用户?

filters.py

class TransationsListFilter(django_filters.FilterSet):
    def __init__(self, *args, **kwargs):
    self.user = kwargs.pop('user')
    super(TransationsListFilter, self).__init__(*args, **kwargs)

    transaction_date = DateFromToRangeFilter(widget=RangeWidget(attrs {'placeholder': 'DD/MM/YYYY'}))
    class Meta:
        model = Transations
        fields = ['transaction_date']

    @property
        def qs(self):
        return super(TransationsListFilter, self).filter(user=user)

views.py

class TransactionsList(PagedFilteredTableView):
    model = Transations
    table_class = TransactionsTable
    filter_class = TransationsListFilter
    formhelper_class = TransationsFormHelper

models.py

class Transations(models.Model):
    transaction_date = models.DateField(default=datetime.now, blank=True)
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
        default = 0
   )

我用 django-crum 插件解决了我的问题。 这是我的最终代码(其他文件相同):
filters.py

import django_filters
from django_filters import DateFromToRangeFilter
from django_filters.widgets import RangeWidget
from .models import Transations,Account
from crum import get_current_user

class TransationsListFilter(django_filters.FilterSet):
    transaction_date = DateFromToRangeFilter(widget=RangeWidget(attrs={'placeholder': 'DD/MM/YYYY'}))
    class Meta:
        model = Transations
        fields = ['transaction_date']

    @property
    def qs(self):
        parent = super(TransationsListFilter, self).qs
        return parent.filter(user=get_current_user())