@trytrytry

Как сделать сортировку полей?

мне нужно отсортировать заметки по дате создания , по категории и тд. скажите как мне это правильно сделать?
метод который просто выводит все заметки выглядит так
def index(request):    
    note = Note.objects.filter(user=request.user.id)        
    return render(request, 'note/index.html',
                    {                    
                    'note' : note,                       
                    }					
                    )


как мне теперь поступить? через что проще реализовать? может создать кнопки для каждой сортровки, только вот как потом все в views это все обработать?
  • Вопрос задан
  • 3151 просмотр
Пригласить эксперта
Ответы на вопрос 4
alternativshik
@alternativshik
Ну наверное надо бы в модели добавить дату, категорию, а потом прочитать доку по Джанге и посмотреть в ней, как делать сортировку.
Ответ написан
Попробуй Django-filter

Generic, reusable application to alleviate writing some of the more mundane bits of view code. Specifically, it allows users to filter down a queryset based on a model’s fields, displaying the form to let them do this.

https://django-filter.readthedocs.org/en/latest/us...
Ответ написан
Комментировать
@FireGM
Можно через GET запросы реализовать, а в view через if/elif ветвление фильтрации или сортировки:
def index(request):
    if request.GET['pub_date']:
        items = Note.objects.order_by('-pub_date')
    else:
        items = Note.objects.all()
return render(...)

Можно проводить какие душе угодны проверки.
Или вместо pub_date использовать обобщенную переменную, из которой будет брать условие для фильтрации/сортировки.
Ответ написан
Комментировать
@blackbb
Я делаю через фильтры, например Publisher.objects.filter(name__contains="press")
Выдаст все обьекты с названием press. Вместо press вставляешь имя переменной, которую передаешь с шаблона. Вот почитай djbook.ru/ch05s11.html
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы