Django - эмуляция поиска / фильтрации интерфейса администратора
У меня есть простой вид Django, который отображает список объектов. Я хочу, чтобы пользователи могли искать / фильтровать / сортировать и т. Д. Список объектов. То, как интерфейс администратора делает это по умолчанию (со всеми включенными), именно то, что я ищу.
Есть ли простой способ сделать это в Django? Или есть какой-нибудь сторонний плагин, чтобы сделать это для меня? Или я застрял написание всего кода вручную?
Я чувствую, что это проблема, с которой сталкивались многие другие, так каков самый простой (и наименее избыточный) способ сделать это?
1 ответ
Вы можете либо отсортировать ваши объекты с помощью Javascript, либо вы можете отсортировать свои объекты на сервере.
Javascript ограничивает, потому что в случае большого количества разбитых на страницы объектов вы сможете только отсортировать то, что находится на текущей странице.
Самый простой способ - отсортировать записи на стороне сервера и позволить пользователю выбирать сортировку с помощью параметров GET; что-то вроде
http://mydomain.com/path/to/view/?sort=asc
Тогда, на ваш взгляд (это очень грубо и не должно быть так, как вы это делаете):
def myview(request):
...
# Check if the user has provided a 'sort' parameter, and check what it is
if request.GET.get("sort", None) is "asc":
results = SomeModel.objects.get(...).order_by("-name")
...
Вы можете применить ту же логику для фильтрации, хотя (по моему мнению), если вы собираетесь изменять фактический набор запросов (возвращаемые объекты), фильтрация должна осуществляться через URL, а не через параметры GET (которые влияют только на порядок, в котором возвращаются результаты)