Не хочу дублировать здесь документацию по Django ORM. Порой возникает такое ощущение, что большинству знакомо только четыре метода из Django ORM (filter
, get
, update
и delete
). Попытаюсь рассказать еще про 12 не таких очевидных. И, возможно, нативного SQL
в вашем коде будет меньше. ORM
надо знать, в Django
модели являются невероятно важной составляющей.
- exclude()
Первый метод -exclude()
. Он возвращает нам набор запросов без заданного вами значения. - Values()
Следующий метод - методvalues()
. Он возвращает словари Python вместо объектаQuerySet
. - values_list()
Методvalues_list()
схож с методомvalues()
, но вместо словарей он возвращает кортежи. - elect_related()
Мы можем использоватьselect_related()
для повышения производительности базы данных путем извлечения всех связанных данных при первом обращении к ней. - order_by()
Методorder_by()
изменяет порядок выдачи запросов по умолчанию. По умолчанию запросы выдаются с сортировкой по первичным ключам(id)
. Если я хочу, чтобы мойQuerySet
упорядочивался по имени, я могу передать поле name методуorder_by()
. - exists()
Методexists()
возвращаетTrue
, если возвращаемыйQuerySet
содержит один или несколько объектов, и значениеFalse
, еслиQuerySet
пустой. - count()
Методcount()
считает количество записей вQuerySet
. Его можно использовать для подсчета всех объектов в таблице базы данных. - first() и last()
Методfirst()
возвращает первый элемент изQuerySet
. Методlast()
возвращает последний элемент изQuerySet
. - in_bulk()
in_bulk()
принимает список значенийid
и возвращает словарь, где каждыйid
сопоставляется с экземпляром объекта. Если вы не передадите список методуin_bulk()
, то получите все объекты. - explain()
Этот метод возвращает строку плана выполненияQuerySet
. Используется для анализа производительности запросов. - latest()
Методlatest()
аналогичен методуlast()
. Он возвращает последний объект в таблице на основе заданных полей. - earliest()
Методearliest()
аналогичен методуfirst()
и противоположен методуlatest()
.
Надеюсь было полезно.