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)