Python 如何更改筛选器查询集取决于用户

Python 如何更改筛选器查询集取决于用户,python,django,django-filter,Python,Django,Django Filter,我使用的是django过滤器,我有两种型号CustomUser和Shop。如何更改筛选器选项queryset,以便用户(request.user)只能筛选其店铺 使用者 商店 过滤器.py views.py f = ShopFilter(request.GET) 您可以使用qs方法在查询集返回之前对其进行过滤 看 因此,在您的情况下,您应该能够说: @property def qs(self): parent = super().qs owner = getattr(self.

我使用的是
django过滤器
,我有两种型号
CustomUser
Shop
。如何更改筛选器选项queryset,以便用户(
request.user
)只能筛选其店铺

使用者 商店 过滤器.py views.py

f = ShopFilter(request.GET)

您可以使用
qs
方法在查询集返回之前对其进行过滤

因此,在您的情况下,您应该能够说:

@property
def qs(self):
    parent = super().qs
    owner = getattr(self.request, 'user', None)

    return parent.filter(custom_user=owner)
我还没有测试过这个方法,但是如果您想对查询进行任何修改,这绝对是一种方法

shops = Shop.objects.filter(is_active=True)
SHOP_CHOICES = [('All', 'All')]
for x in shops:
    SHOP_CHOICES.append((x.address, x))
SHOP_CHOICES = tuple(SHOP_CHOICES)


class ShopFilter(django_filters.FilterSet):
    address = django_filters.MultipleChoiceFilter(choices=SHOP_CHOICES)

    class Meta:
        model = Shop
        fields = ['address']
f = ShopFilter(request.GET)
@property
def qs(self):
    parent = super().qs
    owner = getattr(self.request, 'user', None)

    return parent.filter(custom_user=owner)