如何更改过滤器查询集取决于用户

我正在使用django-filter,我有两个模型CustomUser和Shop. 如何更改过滤器选择查询集以便用户(request.user)只能过滤他的商店?


用户

class CustomUser(AbstractBaseUser, PermissionsMixin):

    shop = models.ManyToManyField(Shop, blank=True, related_name='custom_user')

店铺

class Shop(models.Model):

    address = models.CharField(_('Address'), unique=True, max_length=64, blank=False, null=False, db_index=True)

过滤器.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']

视图.py


f = ShopFilter(request.GET)


潇湘沐
浏览 103回答 1
1回答

尚方宝剑之说

qs您可以在使用该方法返回之前过滤查询集。请参阅过滤主要的 `qs。所以在你的情况下,你应该能够说:@propertydef qs(self):    parent = super().qs    owner = getattr(self.request, 'user', None)    return parent.filter(custom_user=owner)尚未对此进行测试,但如果您想对查询进行任何修改,这绝对是一种方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python