Функция timezone.is_naive
Функция is_naive из модуля django.utils.timezone
проверяет, является ли переданный объект datetime
наивным (naive) - то есть не содержит информации о временной
зоне. В качестве аргумента функция принимает объект
datetime и возвращает True, если объект
наивный, и False в противном случае.
Синтаксис
from django.utils import timezone
result = timezone.is_naive(datetime_obj)
Пример . Проверка наивного объекта
Проверим, является ли объект, созданный с помощью
datetime.now без указания временной зоны, наивным:
from django.utils import timezone
from datetime import datetime
# Создаём наивный объект datetime
naive_dt = datetime(2026, 9, 7, 14, 30, 0)
# Проверяем является ли он наивным
res = timezone.is_naive(naive_dt)
print(res)
Результат выполнения кода:
"True"
Функция вернула True, так как созданный объект
не содержит информации о временной зоне.
Пример . Проверка осознанного объекта
Теперь проверим объект, созданный с указанием временной
зоны. Для этого используем функцию make_aware:
from django.utils import timezone
from datetime import datetime
# Создаём наивный объект
naive_dt = datetime(2026, 9, 7, 14, 30, 0)
# Делаем его осознанным, привязывая к текущей временной зоне
aware_dt = timezone.make_aware(naive_dt)
# Проверяем является ли он наивным
res = timezone.is_naive(aware_dt)
print(res)
Результат выполнения кода:
"False"
Функция вернула False, так как объект теперь
содержит информацию о временной зоне и является
осознанным (aware).
Пример . Использование с объектами из базы данных
При работе с моделями Django поля DateTimeField
могут хранить как наивные, так и осознанные объекты
в зависимости от настроек проекта. Проверим объект,
полученный из базы данных:
from django.utils import timezone
from myapp.models import Article
# Получаем статью из базы данных
article = Article.objects.get(id=1)
# Проверяем является ли поле created_at наивным
res = timezone.is_naive(article.created_at)
print(res)
Результат выполнения кода:
"False"
В проекте с включенной поддержкой временных зон
(USE_TZ = True) поля DateTimeField
возвращают осознанные объекты, поэтому функция
возвращает False.
Смотрите также
-
функция
is_aware,
которая проверяет, является ли объект осознанным -
функция
make_aware,
которая преобразует наивный объект в осознанный -
функция
make_naive,
которая преобразует осознанный объект в наивный -
функция
now,
которая возвращает текущее время в осознанном виде