2016-09-22 4 views
1

Как создать фильтр для числовых данных в Django Admin с входами диапазона?Django Admin: цифровой фильтр поля

P.S. Нашел только этот подобный вопрос, но здесь предлагается только, как группироваться по конкретным диапазонам, а последний вопрос - 2 года назад.

Django Admin: How do I filter on an integer field for a specific range of values

ответ

1

Внимание! Некоторые части API от django, упомянутые в моем ответе, считаются внутренними и могут быть изменены в будущих выпусках django без уведомления.

Принимая это к сведению, на самом деле довольно легко создать собственный фильтр. Все, что вам нужно сделать, это:

  1. подкласс SimpleListFilter и создать некоторый метод внутри, который будет генерировать свои значения диапазона по умолчанию и выбранные значения диапазона (для рендеринга шаблона с фильтром)
  2. Установить метод QuerySet, который будет принимать параметры, представленные ваш фильтр и список фильтров QuerySet
  3. создать шаблон с фильтром (на основе admin/filter.html)
  4. набором template свойства в вашем SimpleListFilter подкласса, указывая на свой шаблон фильтра.

Джанго передавать в шаблон 3 параметров:

  • title - Ваше название фильтра (взято из title собственности в вашем классе)
  • choices - список dicts порождена choices методом вашего класса (по умолчанию он изменяет список кортежей, возвращаемых методом lookups)
  • spec - ваш экземпляр класса.

С этого момента вы можете перейти к любому атрибуту или методу своего класса, используя spec в шаблоне, поэтому создание любого фильтра должно быть возможным.

Смежные вопросы