Django 5 для начинающих

Прогресс по курсу:  9/1004

3.6 Django ORM, методы которые не возвращают QuerySet
2 из 7 шагов пройдено
0 из 25 баллов  получено

count()

Подсчитывает количество объектов в QuerySet. Может использоваться для подсчета всех объектов в таблице базы данных:

>>> Worker.objects.count()
10

Или используется для подсчета количества объектов, возвращенных запросом:

>>> Worker.objects.filter(last_name='Smith').count()
3

 

latest() и earliest()

 Возвращают самую последнюю или самую раннюю дату в базе данных для указанного поля (полей):

Worker.objects.latest('created')
Worker.objects.earliest('created')

 

first() 

Возвращает первый объект (строку), соответствующий набору запросов или None, если нет подходящего объекта. Если в наборе запросов порядок не определен, то набор запросов автоматически упорядочивается по первичному ключу.

Worker.objects.first()

 

last()

Возвращает последний объект (строку), соответствующий набору запросов или None, если нет подходящего объекта. Если в наборе запросов порядок не определен, то набор запросов автоматически упорядочивается по первичному ключу.

Worker.objects.last()

 

exists()

Возвращает True, если полученный QuerySet содержит один или несколько объектов, False, если QuerySet пустой. Самый распространенный вариант использования этого метода, это проверка на наличие объекта в другом QuerySet'е:

Worker.objects.filter(first_name='Bill').exists()

В случае если ответ не содержит объекты, получим False

 

update()

Другой способ обновления объектов представляет метод update() в сочетании с методом filter, которые вместе выполняют один запрос к базе данных:

Worker.objects.filter(age=31).update(work_experience=10)

В данном примере мы выбрали всех сотрудников возрастом 31 год и установили им опыт работы равный 10 годам.

 

delete()

Для удаления мы можем вызвать метод delete() (либо его) у удаляемого объекта:

e = Worker.objects.get(id=1)
e.delete()

Если не требуется получение отдельного объекта из базы данных, тогда можно удалить объект с помощью комбинации методов filter() и delete():

Worker.objects.filter(age__lt=30).delete()

  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий

Не понял момент про два варианта использования exists().

Чем они отличаются?

@Aleksandr_Gurov, Поправил текст, не совсем правильно было написано.

Worker.objects.filter(age_lt=30).delete()

 

Здесь думаю нужно Worker.objects.filter(age=30).delete() так как в модели нет свойства age_lt

@Евгений_Епишкин, там имелось ввиду age__lt, но это уже из темы следующего урока(3.6).

@Евгений_Епишкин, Тоже удивил такой синтаксис, при рассмотрении запроса к базе обнаружилось что имеется ввиду возраст менее 30 (видимо lt обозначает знак меньше ):