问题
In the django admin search bar if i had a model with a column = fruit_name and 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?
回答1:
Override the ModelAdmin.get_search_results` method:
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
回答2:
In your admin.py file you can customize the presentation of the models.
class YourModelAdmin(admin.ModelAdmin):
list_display = ('id_proveedor','anio','mes','fecha','fecha_mod','contacto','usuario','obs')
list_display_links = ('id_proveedor','anio','mes','fecha','fecha_mod','contacto','usuario','obs')
list_filter = ('id_proveedor','anio','mes')
ordering = ['id_proveedor']
search_fields = ('id_proveedor','anio','mes','contacot')
list_per_page = 10
admin.site.register(YourModel, YourModelAdmin)
You can customize for what fields you want the search, the fields you wanna display, the ordering etc.
check the documentation about the admin page
来源:https://stackoverflow.com/questions/28099848/is-there-a-way-to-search-for-multiple-terms-in-admin-search-django