使用django过滤器搜索多个单词时该怎么办

时间:2016-08-26 12:34:18

标签: python regex django django-filters

我制作了一个过滤器,您可以在其中搜索不同的关键字并且有效。

我的问题是,当我尝试搜索多个关键字时。

如何过滤搜索以便将每个单词分开?

以下是它的外观:

第一张图片显示我只搜索一个关键字,第二张图片显示我搜索两个关键字时: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 个答案:

答案 0 :(得分:1)

让我们假设您要搜索以下关键字:fooboo。你有以下关系:

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

您可以对object.keywords进行迭代,看看您所拥有的某个搜索对象是否与keywords中的object匹配。如果是,则返回包含该对象的filter