Django taggit不';不排除

Django taggit不';不排除,django,django-taggit,Django,Django Taggit,我使用的是Django taggit,对我来说很好,但是排除有一个问题。 关键字是类似“key1 key2 key3”的字符串。代码是: keyword = form.cleaned_data['keyword'] qlist = lambda x: [Q(name__icontains=x), Q(author__name__icontains=x),Q(tags__name__icontains=x)] item_list = Item.objects.distinct() for key

我使用的是Django taggit,对我来说很好,但是排除有一个问题。 关键字是类似“key1 key2 key3”的字符串。代码是:

keyword = form.cleaned_data['keyword']
qlist = lambda x: [Q(name__icontains=x), Q(author__name__icontains=x),Q(tags__name__icontains=x)]
item_list = Item.objects.distinct()
for key in keyword.split():
    if ('-'==key[0]):
        print 'exclude: %s'%(key[1:])
        item_list = item_list.exclude(reduce(operator.or_,qlist(key[1:])))
     else:
        print 'include: %s'%(key)
        item_list = item_list.filter(reduce(operator.or_,qlist(key)))
它适用于filter()exclude()Q(name\u icontains=x)、Q(author\u name\u icontains=x)。 但是,当我尝试将exclude()与Q(tags\u name\u\u icontains=x)一起使用时,它不起作用

问候,,
克里斯蒂安

我不太精通塔吉特的复杂故事,但是。。。看看代码,似乎“名称”是以一种惰性的方式动态构建的

因此,如果不显式填充查询,您将得到空请求,因此
Q(tags\uu name\uu icontains=key)
将为空,
exclude(…)
将类似于
过滤器(非空)


尝试通过或类似的方式强制填充标记查询。

我认为,它不受支持。我找到了这个链接:

可能是操作员或uu有故障。有关详细信息,请参阅。我想这不是问题所在,因为我在django控制台中运行并执行:
Item.objects.all().exclude(Q(tags\uuu name\uuuuu icontains=key)).distinct()
,它也会执行相同的操作,显示所有不包含exclude的元素