Метод none
Метод none применяется к QuerySet и возвращает
пустой QuerySet, который не содержит ни одной записи.
Этот метод полезен в тех случаях, когда необходимо
вернуть заведомо пустой результат, например, при
условной фильтрации или для создания объекта
QuerySet, который гарантированно не будет выполнять
запрос к базе данных. Метод не принимает аргументов
и может быть вызван как на менеджере модели,
так и на существующем QuerySet.
Синтаксис
Model.objects.none()
Пример
Создадим пустой QuerySet для модели Article:
from myapp.models import Article
empty_qs = Article.objects.none()
print(empty_qs)
Результат выполнения кода:
<QuerySet []>
Пример
Используем метод none для возврата пустого
результата при определённом условии:
from myapp.models import Article
def get_articles(user):
if not user.is_authenticated:
return Article.objects.none()
return Article.objects.filter(status='published')
Результат выполнения кода для неавторизованного пользователя:
<QuerySet []>
Пример
Вызов метода none на существующем QuerySet
для сброса всех условий фильтрации:
from myapp.models import Article
articles = Article.objects.filter(status='published')
empty = articles.none()
print(empty)
Результат выполнения кода:
<QuerySet []>
Пример
Использование метода none в качестве
заглушки для методов, которые должны возвращать QuerySet:
from 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)
Результат выполнения кода для неактивного пользователя:
<QuerySet []>