2015-07-13 2 views
3

С django search_fields на нашем сайте django-admin мы ищем db для множества вещей. Я хочу, чтобы иметь возможность исключить в search_fields в текстовом поле (или любым другим способом)django admin search_fields с exclude

пример: в моем админ файле:

search_fields = ('name', 'os', 'owner__first_name', 'owner__last_name',) 

и на веб-странице я ищу " Джон»-> получить некоторые результаты, включая Джона Леннона

Я хотел бы, чтобы„Джон { „исключить“: „Леннон“}“

-> это даст некоторые результаты за исключением Джона Леннона

ответ

1

Вы можете настроить поиск, указав метод get_search_results в подклассе ModelAdmin. Не протестировали его, хотя ..

class YourModelAdmin(admin.ModelAdmin): 
    list_display = ('name', 'os') 
    search_fields = ('name', 'os', 'owner__first_name', 'owner__last_name',) 

    def get_search_results(self, request, queryset, search_term): 
     queryset = super(YourModelAdmin, self).get_search_results(request, queryset, search_term) 
     try: 
      queryset |= self.model.objects.exclude(owner__last_name__iexact='lennon') 
     except: 
      pass 
     return queryset 
+1

yah, спасибо, я переопределю функцию set_search_results –