Подтвердить что ты не робот

Функциональность поиска/фильтрации Django admin в качестве таблицы страниц

Мне было интересно, есть ли способ использовать возможности Django Admin filtering/ordering/paginating/search в обычном режиме.

Я имею в виду, что у меня есть модель, некоторые поля на ней. Я хотел бы иметь форму "поиска", где поля будут определены так же, как и с помощью admin.ModelAdmin. Пользователь сможет искать (используя предоставленные поля), фильтровать значения, разбивать страницы на страницы таблицы результатов и т.д. Все это без минимального количества работы с моей стороны, например. просто сконфигурируйте, какие поля следует использовать в форме. Что-то вроде этого:

class SchoolAdmin(ModelAdmin):
    list_display = ('id', 'name', )
    list_display_links = ('name', )
    search_fields = ('name', )
    list_filter = ('type', )

Есть ли что-то подобное? Или я должен сам его кодировать?

Изменить:

Возможности, требуемые от такого плагина/приложения:

  • Отображение данных в виде таблицы
  • Сортировка по столбцам
  • Фильтрация (например, "показывать только строки, имеющие X = Y" )
  • Поиск по столбцам
  • Конфигурация, похожая на стиль ModelAdmin

Alasdair django-tables2 соответствует только 1-м и 2-му условиям.

4b9b3361

Ответ 1

Функциональность django, о которой вы упоминаете, на самом деле не может использоваться повторно в пользовательских представлениях по Django 1.3. Недавно была обсуждена группа разработчиков django-разработчиков о разделение функций администратора, чтобы сделать ее повторно используемой.

Я столкнулся с двумя проектами, которые могут вам пригодиться, django-tables2 и django-filter. Они оба предлагают немного разные вещи, я думаю, вы ищете смесь этих двух.

Джанго-tables2

django-tables2 упрощает задачу превращения наборов данных в таблицы HTML. Он имеет встроенную поддержку разбивки на страницы и сортировки. Он делает для таблиц HTML то, что django.forms делает для HTML-форм

Джанго-фильтр

Django-фильтр - это многозадачное приложение Django, позволяющее пользователям фильтровать queryset динамически. Для этого требуется Python 2.4 или выше. Для использования и инструкции по установке см. в каталоге документов.

Django-фильтр может использоваться для создания интерфейсов, подобных Django admin list_filter. Он имеет API, очень похожий на Django's ModelForms.