2016-08-26 29 views
1

異なるキーワードを検索できるフィルタを作成しました。djangoフィルタで複数​​の単語を検索する場合の対処方法

私の問題は、複数のキーワードを検索しようとしているときです。

検索をフィルタリングして各単語を分けることができるようにするにはどうすればよいですか?ここで

は、それがどのように見えるかの画像です:

まず絵は私が2で検索したときに、私は1つのキーだけの単語で検索した場合を示し、第二のショー:ここenter image description here enter image description here

はのための私のコードですモデルクラス:

class Task(managers.Model): 
keywords = models.ManyToManyField('Keyword', blank=True, related_name='event_set') 
objects = managers.DefaultSelectOrPrefetchManager.from_queryset(managers.TaskQuerySet)() 

そして、ここでは私のFilterクラスです:

class TaskFilterSet(BaseFilterSet): 

keywords = django_filters.MethodFilter(action="filter_keywords") 

class Meta: 
    model = models.Task 

def filter_keywords(self, queryset, value): 
    from django.db.models import Q 
    return queryset.filter(Q(keywords__word__icontains=value)) 

答えて

1

キーワード「foo」と「boo」を検索しているとします。あなたが持っている検索対象の一つがobjectkeywordsのいずれかに一致する場合は、object.keywordsを反復して見ることができます

search['foo','boo'] 
object.keywords['foo','boo','woo'] 

:。そして、あなたは次のような関係を持っています存在する場合は、そのオブジェクトを含むfilterを返します。

+0

それはうまくいった!ありがとう! –

関連する問題