Поле BooleanField
Поле BooleanField в Django представляет собой булево поле, которое хранит значения True или False. В базе данных оно обычно отображается как тип BOOLEAN. Это поле часто используется для флагов, статусов или других бинарных состояний. По умолчанию виджет формы для этого поля - CheckboxInput.
Синтаксис
from django.db import models
class MyModel(models.Model):
field_name = models.BooleanField(**options)
Параметры
Поле принимает стандартные параметры, а также специфичные:
default- значение по умолчанию (обычноFalseилиTrue);null- рекомендуется оставлятьFalse, так как в БД null для булева поля не имеет смысла;blank- еслиTrue, поле не обязательное в формах.
Пример
Давайте создадим модель для статьи, где будет поле is_published, указывающее, опубликована ли статья:
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
is_published = models.BooleanField(default=False)
Пример
Создадим несколько статей и сохраним их в базу данных:
from myapp.models import Article
# Create article with is_published=True
article1 = Article(
title="First article",
content="Content of first article",
is_published=True
)
article1.save()
# Create article with is_published=False (default)
article2 = Article(
title="Second article",
content="Content of second article"
)
article2.save()
Пример
Отфильтруем только опубликованные статьи:
from myapp.models import Article
published = Article.objects.filter(is_published=True)
for article in published:
print(article.title)
Результат выполнения кода:
"First article"
Пример
Найдем все неопубликованные статьи:
from myapp.models import Article
drafts = Article.objects.filter(is_published=False)
for article in drafts:
print(article.title)
Результат выполнения кода:
"Second article"
Пример
Изменим статус публикации статьи и обновим ее в базе данных:
from myapp.models import Article
article = Article.objects.get(title="Second article")
article.is_published = True
article.save()
res = Article.objects.filter(is_published=True).count()
print(res)
Результат выполнения кода:
"2"
Смотрите также
-
поле
CharField,
которое используется для хранения коротких строк -
поле
TextField,
которое предназначено для длинных текстов -
поле
IntegerField,
которое хранит целые числа -
поле
DateField,
которое хранит даты