Метод none

Метод none применяется к QuerySet и возвращает пустой QuerySet, который не содержит ни одной записи. Этот метод полезен в тех случаях, когда необходимо вернуть заведомо пустой результат, например, при условной фильтрации или для создания объекта QuerySet, который гарантированно не будет выполнять запрос к базе данных. Метод не принимает аргументов и может быть вызван как на менеджере модели, так и на существующем QuerySet.

Синтаксис

pythonModel.objects.none()

Пример

Создадим пустой QuerySet для модели Article:

pythonfrom myapp.models import Article

empty_qs = Article.objects.none()
print(empty_qs)

Результат выполнения кода:

python<QuerySet []>

Пример

Используем метод none для возврата пустого результата при определённом условии:

pythonfrom myapp.models import Article

def get_articles(user):
  if not user.is_authenticated:
    return Article.objects.none()
  return Article.objects.filter(status='published')

Результат выполнения кода для неавторизованного пользователя:

python<QuerySet []>

Пример

Вызов метода none на существующем QuerySet для сброса всех условий фильтрации:

pythonfrom myapp.models import Article

articles = Article.objects.filter(status='published')
empty = articles.none()
print(empty)

Результат выполнения кода:

python<QuerySet []>

Пример

Использование метода none в качестве заглушки для методов, которые должны возвращать QuerySet:

pythonfrom myapp.models import Article

class ArticleManager:
  @staticmethod
  def get_for_user(user):
    if not user.is_active:
      return Article.objects.none()
    return Article.objects.filter(author=user)

Результат выполнения кода для неактивного пользователя:

python<QuerySet []>

Смотрите также

  • метод all,
    который возвращает все записи из базы данных
  • метод filter,
    который фильтрует QuerySet по заданным условиям
  • метод exclude,
    который исключает записи из QuerySet
  • метод iterator,
    который возвращает итератор для QuerySet