gpt4 book ai didi

django-filter:使用 request.user 扩展过滤器查询

转载 作者:行者123 更新时间:2023-12-04 18:06:41 25 4
gpt4 key购买 nike

我需要向 django-filter 请求添加一个额外的过滤器属性(在后台)。

我的型号:

class Event(models.Model):
name=models.CharField(max_length=254)
location=models.ForeignKey(Place)
invited_user=models.ManyToManyField(User,null=True, blank=True)

使用过滤器可以过滤那些具有相同位置的条目。这是有效的。

此外,我必须排除所有那些受邀请的用户不是 request.user 的条目(只有在用户具有权限时才可以选择此过滤器属性)。

这可能与 django-filter 一起使用,如果是,如何实现?

我的过滤器类:
导入 django_filters
从模型导入事件
class EventFilter(django_filters.FilterSet):
class Meta:
model = Event
fields = ['location']

我的工作基于: How do I filter tables with Django generic views?

最佳答案

您可以访问 FilterSet.qs 属性中的请求对象。

class EventFilter(django_filters.FilterSet):
class Meta:
model = Event
fields = ['location']

@property
def qs(self):
queryset=super(EventFilter, self).qs
if request.user.has_perm("app_label.has_permission"):
return queryset.exclude(invited_user!=self.request.user)
return queryset
文档 https://rpkilby.github.io/django-filter/guide/usage.html#filtering-the-primary-qs

关于django-filter:使用 request.user 扩展过滤器查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25596127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com