РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
112 of 818 menu

Лукап isnull

Лукап isnull применяется к полям модели в запросах filter и exclude. Он позволяет отбирать записи, где значение указанного поля является NULL (пустым) или не является NULL. Аргумент передается в виде булева значения: True для поиска NULL-значений и False для поиска не-NULL значений.

Синтаксис

Model.objects.filter(field__isnull=True) Model.objects.filter(field__isnull=False)

Пример

Допустим, у нас есть модель статьи с полем 'published_at', которое может быть пустым, если статья еще не опубликована. Найдем все статьи, у которых дата публикации не указана:

from myapp.models import Article unpublished_articles = Article.objects.filter(published_at__isnull=True) for article in unpublished_articles: print(article.title)

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

"Draft post" "Pending review"

Пример

Теперь найдем все опубликованные статьи, у которых дата публикации заполнена:

from myapp.models import Article published_articles = Article.objects.filter(published_at__isnull=False) for article in published_articles: print(article.title)

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

"First post" "Second post" "Third post"

Пример

Лукап isnull можно комбинировать с другими условиями в одном запросе. Например, найдем неопубликованные статьи с определенным автором:

from myapp.models import Article unpublished_by_user = Article.objects.filter( author__username="john_doe", published_at__isnull=True ) for article in unpublished_by_user: print(f"{article.title} - {article.author.username}")

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

"Draft by John" - "john_doe" "Work in progress" - "john_doe"

Пример

Используем exclude вместе с isnull, чтобы исключить записи с пустыми значениями:

from myapp.models import Article articles_with_description = Article.objects.exclude(description__isnull=True) for article in articles_with_description: print(f"{article.title} - {article.description[:20]}...")

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

"Post 1" - "This is a descripti..." "Post 2" - "Short description..."

Пример

Лукап isnull работает не только с полями дат, но и с любыми типами полей, включая строковые, числовые и внешние ключи. Рассмотрим пример с полем внешнего ключа:

from myapp.models import Article articles_without_category = Article.objects.filter(category__isnull=True) print(f"Articles without category: {articles_without_category.count()}")

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

"Articles without category: 5"

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

  • лукап exact,
    который выполняет точное сравнение значения поля
  • лукап gt,
    который находит записи со значением больше указанного
  • лукап lt,
    который находит записи со значением меньше указанного
  • метод filter,
    который выполняет фильтрацию QuerySet
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить