Функция timezone.is_naive

Функция is_naive из модуля django.utils.timezone проверяет, является ли переданный объект datetime наивным (naive) - то есть не содержит информации о временной зоне. В качестве аргумента функция принимает объект datetime и возвращает True, если объект наивный, и False в противном случае.

Синтаксис

pythonfrom django.utils import timezone

result = timezone.is_naive(datetime_obj)

Пример . Проверка наивного объекта

Проверим, является ли объект, созданный с помощью datetime.now без указания временной зоны, наивным:

pythonfrom 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)

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

python"True"

Функция вернула True, так как созданный объект не содержит информации о временной зоне.

Пример . Проверка осознанного объекта

Теперь проверим объект, созданный с указанием временной зоны. Для этого используем функцию make_aware:

pythonfrom 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)

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

python"False"

Функция вернула False, так как объект теперь содержит информацию о временной зоне и является осознанным (aware).

Пример . Использование с объектами из базы данных

При работе с моделями Django поля DateTimeField могут хранить как наивные, так и осознанные объекты в зависимости от настроек проекта. Проверим объект, полученный из базы данных:

pythonfrom 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)

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

python"False"

В проекте с включенной поддержкой временных зон (USE_TZ = True) поля DateTimeField возвращают осознанные объекты, поэтому функция возвращает False.

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

  • функция is_aware,
    которая проверяет, является ли объект осознанным
  • функция make_aware,
    которая преобразует наивный объект в осознанный
  • функция make_naive,
    которая преобразует осознанный объект в наивный
  • функция now,
    которая возвращает текущее время в осознанном виде