Административный сайт Django настроить запрос search_fields - PullRequest
16 голосов
/ 17 июня 2010

В администраторе django вы можете установить search_fields для ModelAdmin, чтобы иметь возможность поиска по заданным там свойствам. Мой класс модели имеет свойство, которое не является реальным свойством модели, это означает, что его нет в таблице базы данных. Свойство относится к другой таблице базы данных, которая не связана с текущей моделью через отношения. Но я хочу иметь возможность поиска по нему, поэтому мне нужно как-то настроить запрос, который создает сайт администратора, чтобы выполнить фильтрацию при заполнении поля поиска - возможно ли это, и если, как? Я могу запросить таблицу базы данных моего пользовательского свойства, а затем она возвращает идентификаторы классов модели, подходящих для поиска. Это, как я уже сказал, должно попасть в поисковый запрос администратора сайта.

Спасибо!

Ответы [ 3 ]

19 голосов
/ 17 июля 2014

Начиная с django 1.6, вы можете настроить поиск, определив метод get_search_results в своем подклассе ModelAdmin.

Это хорошо объяснено в документации django .Следующий пример скопирован из этого документа.

class PersonAdmin(admin.ModelAdmin):
    list_display = ('name', 'age')
    search_fields = ('name',)

    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super(PersonAdmin, self).get_search_results(request, queryset, search_term)
        try:
            search_term_as_int = int(search_term)
            queryset |= self.model.objects.filter(age=search_term_as_int)
        except:
            pass
        return queryset, use_distinct
0 голосов
/ 03 сентября 2012

Вы должны использовать search_fields = ['foreign_key__related_fieldname'] как search_fields = ['user__email'] в классе администратора, который расширяет admin.ModelAdmin

читать дальше здесь

0 голосов
/ 17 июня 2010

это может помочь

search_fields = ['foreign_key__related_fieldname']

http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...