【问题标题】:Django: admin chained filteringDjango:管理员链式过滤
【发布时间】:2014-05-01 19:07:16
【问题描述】:

我想做一个链式过滤,但它不起作用

def queryset(self, request):
   qs = super(MaterialAdmin, self).queryset(request)
   if request.user.is_superuser:
       self.exclude = []
       return qs
   else:
       self.exclude = ['droits_acces', 'groupe']


   ff = qs.filter(groupe= request.user)
   gg = qs.filter(user=request.user)

   jj = qs.filter(user=request.user).filter(groupe= request.user)

   return jj

怎么办?

ff = [CC409, ST54]

gg = [Al2O3, BB79, CC409]

我想要

jj = [CC409, ST54, Al2O3, BB79]

【问题讨论】:

    标签: django filtering admin chained


    【解决方案1】:

    您可以使用the Q object 进行复杂查询。

    from django.db.models import Q
    
    ...
        def queryset(self, request):
        ...
        return qs.filter(Q(groupe=request.user)|Q(user=request.user))
    

    【讨论】:

    • 如果我想查看其他用户但同组的资料?
    • | 将 2 个 Q() 对象与 OR 逻辑组合在一起。所以它结合了第一个Q和第二个Q的元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2011-11-13
    • 2011-03-05
    • 2011-01-23
    • 2016-03-10
    • 2013-06-22
    相关资源
    最近更新 更多