← Назад ко всем вопросам

Чем отличаются get(), filter(), exclude() в Django ORM?

1️⃣ Как кратко ответить

get(), filter(), и exclude() — это методы Django ORM для работы с запросами к базе данных. get() возвращает единственный объект, соответствующий критериям, или вызывает ошибку, если таких объектов нет или их больше одного. filter() возвращает QuerySet с объектами, соответствующими критериям. exclude() также возвращает QuerySet, но с объектами, которые не соответствуют критериям.

2️⃣ Подробное объяснение темы

Django ORM (Object-Relational Mapping) — это инструмент, который позволяет взаимодействовать с базой данных, используя Python-код вместо SQL-запросов. Методы get(), filter(), и exclude() — это основные инструменты для выборки данных из базы.

get()

  • Что делает:
    Метод get() используется для получения одного объекта из базы данных, который точно соответствует заданным критериям.

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

  • Пример использования:

    from myapp.models import Person
    ​
    try:
        person = Person.objects.get(id=1)
        print(person.name)
    except Person.DoesNotExist:
        print("Person not found.")
    except Person.MultipleObjectsReturned:
        print("Multiple persons found.")
    
  • Когда использовать:
    Используйте get() только тогда, когда уверены, что в базе данных существует ровно один объект, соответствующий условиям.

filter()

  • Что делает:
    Метод filter() возвращает QuerySet, содержащий все объекты, которые соответствуют заданным критериям.

  • Как работает:
    filter() не вызывает исключений, если объекты не найдены. Он просто возвращает пустой QuerySet.

  • Пример использования:

    from myapp.models import Person
    ​
    people = Person.objects.filter(age__gte=18)
    for person in people:
        print(person.name)
    
  • Когда использовать:
    Используйте filter() для получения множества объектов, соответствующих условиям. Это наиболее часто используемый метод для выборки данных.

exclude()

  • Что делает:
    Метод exclude() возвращает QuerySet, содержащий все объекты, которые не соответствуют заданным критериям.

  • Как работает:
    exclude() создает запрос, который исключает объекты, соответствующие условиям, и возвращает остальные.

  • Пример использования:

    from myapp.models import Person
    ​
    non_adults = Person.objects.exclude(age__gte=18)
    for person in non_adults:
        print(person.name)
    
  • Когда использовать:
    Используйте exclude() для исключения объектов, которые соответствуют определенным условиям, из вашего запроса.

Тема: Django
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки