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

Поле DateTimeField

Поле DateTimeField предназначено для хранения даты и времени в базе данных. Оно принимает объекты типа datetime.datetime или строки в формате, поддерживаемом базой данных. Поле автоматически преобразует время в часовой пояс, заданный в настройках проекта. При создании модели можно указать параметры auto_now и auto_now_add для автоматического заполнения поля текущей датой и временем.

Синтаксис

from django.db import models class ModelName(models.Model): field_name = models.DateTimeField(**options)

Пример

Создадим модель статьи с полем даты публикации:

from django.db import models class Article(models.Model): title = models.CharField(max_length=200) content = models.TextField() published_at = models.DateTimeField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) def __str__(self): return self.title

В этой модели:

⁅b⁆published_at⁅/b⁆ - поле, которое заполняется вручную.

⁅b⁆created_at⁅/b⁆ - автоматически устанавливается при создании записи.

⁅b⁆updated_at⁅/b⁆ - автоматически обновляется при каждом сохранении.

Пример

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

from datetime import datetime from myapp.models import Article # Создаём статью с текущей датой и временем article1 = Article.objects.create( title="First article", content="Content of first article", published_at=datetime.now() ) # Создаём статью с указанной датой article2 = Article.objects.create( title="Second article", content="Content of second article", published_at=datetime(2026, 9, 5, 15, 30, 0) ) print(article1.published_at) print(article2.published_at)

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

"2026-09-05 12:00:00+00:00" "2026-09-05 15:30:00+00:00"

Пример

Отфильтруем статьи, опубликованные после определённой даты:

from datetime import datetime from myapp.models import Article # Фильтруем статьи, опубликованные после 1 сентября 2026 года articles = Article.objects.filter( published_at__date__gte=datetime(2026, 9, 1).date() ) for article in articles: print(article.title)

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

"First article" "Second article"

Пример

Получим все статьи, созданные за последнюю неделю:

from datetime import datetime, timedelta from myapp.models import Article # Вычисляем дату неделю назад week_ago = datetime.now() - timedelta(days=7) # Получаем статьи, созданные за последнюю неделю recent_articles = Article.objects.filter( created_at__gte=week_ago ) for article in recent_articles: print(f"{article.title}: {article.created_at}")

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

  • поле DateField,
    которое хранит только дату без времени
  • поле TimeField,
    которое хранит только время без даты
  • поле DurationField,
    которое хранит промежутки времени
  • метод datetimes,
    который извлекает уникальные даты и время из QuerySet
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить