Как изменять выборку вариантов фильтра (queryset) в зависимости от юзера в Django?
Как изменять выборку вариантов фильтра в зависимости от request.user?
filters.py
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']
views.py
f = ShopFilter(request.GET)
Ответы (1 шт):
Автор решения: Sasha Borysenko
→ Ссылка
Можно переопределить qs. Пример:
@property
def qs(self):
parent = super().qs
owner = getattr(self.request, 'user', None)
return parent.filter(custom_user=owner)