Является обязательным знать и понимать, как создаются и обновляются записи в Базе Данных.
Для выбора всех записей из модели News, достаточно лишь записать в переменную
news = News.objects.all()
Этот вызов транслирует следующую SQL-команду:
SELECT id, caregory, title, body FROM news;
Примечание:
При выборке Django не употребляет команду SELECT * , а всегда перечисляет все поля явно.
Рассмотрим отдельные части выражения:
News.objects.all()
News - это наша модель, в которой имеются поля title, body и category;
objects - это атрибут, который отвечает за операции "уровня таблицы" (в том числе выборку данных) и называется менеджером;
метод all() - метод менеджера objects, который возвращает все строки таблицы базы данных. Этот объект является экземпляром класса QuerySet.
Однако выводить все записи из таблицы приходится редко, и иногда данные нужно фильтровать:
News.objects.filter(category='IT')
Метод filter() принимает аргументы, которые затем транслируется в предложение WHERE SQL-команды SELECT.
Допустимо, так же, передать несколько аргументов.
News.objects.filter(category='IT', title='python')
В некоторых случаях удобнее было бы выбрать всего лишь один объект, для этого используется метод get():
News.objects.get(title='python')
Выполняя предыдущие примеры, мы не сказали, как упорядочить результаты. Для этого используется метод order_by():
News.objects.order_by('title')
Таким образом результат будет отсортирован в алфавитном порядке. Сортировать можно по любому полю и нескольким полям(второе поле устраняет неоднозначность в случае первого).
Допускается также изменить порядок сортировки на противоположенный, поставив перед именем поля знак `-`:
News.objects.order_by('-title')
Так же Django позволяет задать порядок сортировки по умолчанию прямо в модели. Для этого используется концепция: class Meta, который принимает аргумент ordering. Подробнее о class Meta вы можете узнать в документации.