Класс Now

Класс Now применяется в запросах Django для получения текущей даты и времени на стороне базы данных. Он возвращает объект времени, соответствующий моменту выполнения запроса. В отличие от Python-функции datetime.now, значение вычисляется непосредственно в базе данных, что гарантирует единообразие времени для всех записей в одном запросе. Класс принимает необязательный аргумент tzinfo для указания часового пояса.

Синтаксис

pythonfrom django.db.models import Now

Now(tzinfo=None)

Пример

Давайте обновим поле 'last_modified' у всех статей, установив в него текущую дату и время:

pythonfrom myapp.models import Article
from django.db.models import Now

updated_count = Article.objects.update(last_modified=Now())
print(updated_count)

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

python"15"

Пример

Давайте добавим новую статью, установив поле 'created_at' в текущую дату и время с помощью класса Now:

pythonfrom myapp.models import Article
from django.db.models import Now

article = Article.objects.create(
  title="New article",
  content="Article content",
  created_at=Now()
)
print(article.title)
print(article.created_at)

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

python"New article"
"2026-09-05 14:30:15.123456+00:00"

Пример

Давайте отфильтруем статьи, созданные до текущего момента с использованием класса Now:

pythonfrom myapp.models import Article
from django.db.models import Now

old_articles = Article.objects.filter(
  created_at__lt=Now()
)
for article in old_articles:
  print(article.title)

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

python"First article"
"Second article"
"Third article"

Пример

Давайте аннотируем статьи полем 'current_time', содержащим текущую дату и время, и выведем результат:

pythonfrom myapp.models import Article
from django.db.models import Now, Value, F

articles = Article.objects.annotate(
  current_time=Now()
).values('title', 'current_time')
for article in articles:
  print(article)

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

python[{'title': 'First article', 'current_time': datetime.datetime(2026, 9, 5, 14, 30, 15, 123456, tzinfo=datetime.timezone.utc)}, {'title': 'Second article', 'current_time': datetime.datetime(2026, 9, 5, 14, 30, 15, 123456, tzinfo=datetime.timezone.utc)}]

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

  • класс F,
    который позволяет выполнять операции с полями моделей на уровне базы данных
  • класс Extract,
    который извлекает часть даты или времени из поля
  • класс Trunc,
    который обрезает дату и время до заданной точности
  • метод datetimes,
    который возвращает список дат и времени из QuerySet