目次
はじめに
PythonのDjangoフレームワークでは、日時データの扱いが重要です。この記事では、Djangoのdatetimesメソッドを使って、効率的に日時データを操作する方法を具体的なコード例と共に紹介します。
Datetimesメソッド基本
Djangoのdatetimes
メソッドは、QuerySetの日時フィールドに対して、年、月、日、時間、分、秒の精度で日時データを抽出する機能を提供します。
基本的な使い方
from myapp.models import MyModel
import datetime
# 今日の日付を取得
today = datetime.date.today()
# 今日のデータを取得
today_records = MyModel.objects.filter(date_field__date=today)
より高度な例
月別のデータ集計
# 月別のデータ集計
monthly_data = MyModel.objects.datetimes('date_field', 'month')
特定の期間のデータフィルタリング
start_date = datetime.date(2023, 1, 1)
end_date = datetime.date(2023, 6, 30)
# 特定の期間のデータをフィルタリング
period_records = MyModel.objects.filter(
date_field__range=(start_date, end_date)
)
時間帯によるデータ抽出
from django.utils import timezone
# 現在の時間
now = timezone.now()
# 過去12時間のデータを取得
last_12_hours = MyModel.objects.filter(
date_field__gte=now - datetime.timedelta(hours=12)
)
実践的なユースケース: オンライン書籍アプリ
オンライン書籍アプリにおいて、最新のリリース情報や人気の書籍を日時データを基に取得する方法を見てみましょう。
新着書籍の取得
# 最近7日間にリリースされた書籍
new_books = Book.objects.filter(
release_date__gte=today - datetime.timedelta(days=7)
).order_by('-release_date')
月間ベストセラーの取得
# 月間ベストセラー書籍
best_sellers = Book.objects.filter(
purchase_date__month=today.month
).annotate(
num_purchases=Count('purchase')
).order_by('-num_purchases')[:10]