Django - эмуляция поиска / фильтрации интерфейса администратора - PullRequest
0 голосов
/ 14 октября 2011

У меня есть простое представление Django, которое отображает список объектов.Я хочу, чтобы пользователи могли искать / фильтровать / сортировать и т. Д. Список объектов.То, как интерфейс администратора делает это по умолчанию (со всеми включенными), именно то, что я ищу.

Есть ли простой способ сделать это в Django?Или есть какой-нибудь сторонний плагин, чтобы сделать это для меня?Или я застрял, когда пишу весь код вручную?

Мне кажется, что с этой проблемой сталкивались многие другие, так каков самый простой (и наименее избыточный) способ сделать это?

1 Ответ

0 голосов
/ 14 октября 2011

Вы можете сортировать свои объекты с помощью 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 (которые влияют только на порядок, в котором возвращаются результаты)

...