我正在使用 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_ icontains=x)、Q(author _name_ icontains=x)。但是,当我尝试将exclude()与 Q(tags _name__icontains=x) 一起使用时,它不起作用。
问候, 克里斯蒂安