本文介绍了有没有一种方法可以在管理员搜索中搜索多个术语?詹戈的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在django管理员搜索栏中,如果我有一个带有column = fruit_name的模型并且我想在该列中搜索所有具有fruit_name = banana或apple的实例,该实例将显示所有香蕉和苹果,我该怎么做?
In the django admin search bar if i had a model with a column = fruit_nameand I wanted to search that column for all instances with either the fruit_name = banana or apple which would show all of the bananas and apples, how could I do that?
推荐答案
覆盖 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
这篇关于有没有一种方法可以在管理员搜索中搜索多个术语?詹戈的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!