django - 有没有办法在管理搜索中搜索多个术语? Django

标签 django django-admin django-search-lucene

在 django 管理搜索栏中,如果我有一个带有列 =fruit_name 的模型 我想在该列中搜索包含fruit_name = 香蕉或苹果的所有实例,这将显示所有香蕉和苹果,我该怎么做?

最佳答案

覆盖ModelAdmin.get_search_results ` 方法:

from operator import or_
from django.db.models import Q

class MyAdmin(admin.ModelAdmin):
    ...
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(MyAdmin, self).get_search_results(
                                               request, queryset, search_term)
        search_words = search_term.split()
        if search_words:
            q_objects = [Q(**{field + '__icontains': word})
                                for field in self.search_fields
                                for word in search_words]
            queryset |= self.model.objects.filter(reduce(or_, q_objects))
    return queryset, use_distinct

关于django - 有没有办法在管理搜索中搜索多个术语? Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28099848/

相关文章:

python - Django (admin.e104) 必须继承自 'InlineModelAdmin'

django - Apache Solr搜索一词的一部分

database - 如何为多对多关系创建 initial_data Json fixture?

django - Gunicorn Django [严重] worker 超时

django - 使用跨关系的字段查找在 django 模型上进行链式过滤和排除

sql - 在Django中,如何在字段上对模型进行排序,然后获取最后一个项目?

django - 在标题中隐藏 Django Logo /名称 Django 管理工具

python - Admin FileField 当前 url 不正确