私はDjango-taggitを使用していて問題なく動作しますが、除外に問題があります。 キーワードは 'key1 key2 key3'のような文字列です。コードは次のとおりです。Django taggitが動作しない
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)))
それは、フィルタ()ためとのために正常に動作します(除外) Q(名_ icontains = xで)、Q(著者 [_NAME_ icontains = xで)。 しかし、exclude()をQ(タグ _name__icontains = x)で使用しようとすると、うまくいきません。
よろしく、 クリスティアン
おそらく、operator.or_に問題があります。詳細については、[ここ](http://stackoverflow.com/questions/8138919/trying-to-reduce-django-q-objects-with-operator-or-seems-to-result-in-reduction)を参照してください。 –
これは問題ではありません。私はdjangoコンソールで実行して実行しているので、 'Item.objects.all()。exclude(Q(tags__name__icontains = key))。distinct()' 同じ、**除外なしのすべての要素を表示する** – cmaluenda