为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2022-10-06 18:46:05
我正在使用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)过滤器.pyshops = 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']视图.pyf = ShopFilter(request.GET)
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

qs您可以在使用该方法返回之前过滤查询集。

请参阅过滤主要的 `qs。

所以在你的情况下,你应该能够说:

@property

def qs(self):

    parent = super().qs

    owner = getattr(self.request, 'user', None)


    return parent.filter(custom_user=owner)

尚未对此进行测试,但如果您想对查询进行任何修改,这绝对是一种方法。


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信