2014-03-24 121 views
0

我想做一个链式的过滤,但它不工作Django的:管理链过滤

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 = [氧化铝,BB79,CC409]

我想有

JJ = [CC409,ST54,氧化铝,BB79]

回答

0

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

from django.db.models import Q 

... 
    def queryset(self, request): 
    ... 
    return qs.filter(Q(groupe=request.user)|Q(user=request.user)) 
+0

如果我想查看另一个用户的材料,但使用相同的组? – user3172700

+0

过滤同一组别的另一个材料。 – user3172700

+0

'|'将2个Q()对象与OR逻辑组合在一起。所以它结合了第一个Q和第二个Q的元素。 – kanu