Django taggit不';不排除
我使用的是Django taggit,对我来说很好,但是排除有一个问题。 关键字是类似“key1 key2 key3”的字符串。代码是: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
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的元素