---
title: "日付ベースのミックスイン (mixin)"
version: 6.0
locale: ja
source: https://docs.djangoproject.com/ja/6.0/ref/class-based-views/mixins-date-based/
canonical: https://djangodocs.dev/ja/6.0/ref/class-based-views/mixins-date-based/
---
# 日付ベースのミックスイン (mixin)

> **Note**
>
> これらのミックスインに含まれるすべての日付フォーマット属性は [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマット文字列を使用します。 [`now`](/ja/6.0/ref/templates/builtins/#std-templatetag-now) テンプレートタグのフォーマット文字列は互換性がないので使用しないでください。

## `YearMixin`

#### `class YearMixin`

日付の「年」コンポーネントのパース情報を取得したり提供したりするために使用できるミックスイン。

**メソッドと属性**

#### `year_format`

[`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) のフォーマットで年をパースします。デフォルトでは `'%Y'` です。

#### `year`

**オプション** 年の値を文字列で指定します。デフォルトでは `None` に設定されています。これは他の方法で年を決定することを意味します。

#### `get_year_format()`

年をパースする際に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットを返します。デフォルトでは [`year_format`](#django.views.generic.dates.YearMixin.year_format) を返します。

#### `get_year()`

このビューがデータを表示する年を文字列で返します。以下のソースを順に試みます：

- [`YearMixin.year`](#django.views.generic.dates.YearMixin.year) 属性の値。
- URL パターンに含まれる `year` 引数の値。
- `GET` クエリ引数 `year` の値。

有効な年指定が見つからない場合は 404 を返します。

#### `get_next_year(date)`

指定した日付の翌年の最初の日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させたりします。

#### `get_previous_year(date)`

指定した日付の前の年の最初の日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させたりします。

## `MonthMixin`

#### `class MonthMixin`

日付の「月」コンポーネントのパース情報を取得したり提供したりするために使用できるミックスイン。

**メソッドと属性**

#### `month_format`

[`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットは月をパースするときに使われます。デフォルトでは `'%b'` です。

#### `month`

**オプション** 月を表す文字列。デフォルトでは `None` に設定されています。これは月が他の方法で決定されることを意味します。

#### `get_month_format()`

月をパースする際に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットを返します。デフォルトでは [`month_format`](#django.views.generic.dates.MonthMixin.month_format) を返します。

#### `get_month()`

このビューがデータを表示する月を文字列で返します。以下のソースを順に試みます：

- [`MonthMixin.month`](#django.views.generic.dates.MonthMixin.month) 属性の値です。
- URL パターンからキャプチャされた `month` 引数の値。
- `GET` クエリ引数 `month` の値。

有効な月の指定が見つからない場合は 404 を返します。

#### `get_next_month(date)`

指定した日付の翌月初日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外が発生したりします。

#### `get_previous_month(date)`

指定した日付の前の月の最初の日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させたりします。

## `DayMixin`

#### `class DayMixin`

日付の「日」コンポーネントのパース情報を取得したり提供したりするために使用できるミックスインです。

**メソッドと属性**

#### `day_format`

日をパースする際に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットです。デフォルトでは `'%d'` です。

#### `day`

**オプション** 文字列で日の値を指定します。デフォルトでは `None` に設定されています。これは別の方法で日を決定することを意味します。

#### `get_day_format()`

日をパースする際に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットを返します。デフォルトでは [`day_format`](#django.views.generic.dates.DayMixin.day_format) を返します。

#### `get_day()`

このビューがデータを表示する日を文字列で返します。以下のソースを順に試みます：

- [`DayMixin.day`](#django.views.generic.dates.DayMixin.day) 属性の値。
- URL パターンからキャプチャされた `day` 引数の値。
- `GET` クエリ引数 `day` の値。

有効な日の指定が見つからない場合は 404 を返します。

#### `get_next_day(date)`

指定された日の有効な翌日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させたりします。

#### `get_previous_day(date)`

有効な前日を含む日付オブジェクトを返します。この関数は [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によって `None` を返したり、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させたりします。

## `WeekMixin`

#### `class WeekMixin`

日付の「週」コンポーネントのパース情報を取得したり提供したりするために使用できるミックスイン。

**メソッドと属性**

#### `week_format`

週をパースする際に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットです。デフォルトでは `'%U'` です。週が月曜日から始めたい場合は `'%W'` または `'%V'` (ISO 8601 week) に設定します。

#### `week`

**オプション** 週の値を文字列で指定します。デフォルトでは `None` に設定されています。これは他の方法で週を決定することを意味します。

#### `get_week_format()`

週のパース時に使用する [`strftime()`](https://docs.python.org/3/library/time.html#time.strftime) フォーマットを返します。デフォルトでは [`week_format`](#django.views.generic.dates.WeekMixin.week_format) を返します。

#### `get_week()`

このビューがデータを表示する週を文字列で返します。以下のソースを順に試みます：

- [`WeekMixin.week`](#django.views.generic.dates.WeekMixin.week) 属性の値。
- URL パターンからキャプチャされた `week` 引数の値
- `week` `GET` クエリ引数の値。

有効な週の指定が見つからない場合、404を発生させます。

#### `get_next_week(date)`

指定した日付の、次の週の初日のdateオブジェクトを返します。またこの関数は、 [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によっては、 `None` を返すか、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させることがあります。

#### `get_prev_week(date)`

指定した日付の、前の週の初日のdateオブジェクトを返します。またこの関数は、 [`allow_empty`](#django.views.generic.dates.BaseDateListView.allow_empty) と [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) の値によっては、 `None` を返すか、 [`Http404`](/ja/6.0/topics/http/views/#django.http.Http404) 例外を発生させることがあります。

## `DateMixin`

#### `class DateMixin`

すべてのデータベースのビューに共通の動作を提供する mixin クラス。

**メソッドと属性**

#### `date_field`

`QuerySet` のモデル内の `DateField` または `DateTimeField` の名前です。日付ベースのアーカイブがページに表示するオブジェクトのリストを決定する際に使用します。

[タイムゾーンサポート](/ja/6.0/topics/i18n/timezones/) が有効で `date_field` が `DateTimeField` である場合、日付はカレントタイムゾーンにあると仮定されます。そうでない場合、クエリセットにはエンドユーザのタイムゾーンにおける前日または翌日のオブジェクトが含まれる可能性があります。

> **Warning**
>
> このような場合、ユーザーごとのタイムゾーン選択を実装していると、同じURLでもエンドユーザーのタイムゾーンによって異なるオブジェクトが表示される可能性があります。これを避けるためには、 `date_field` 属性として `DateField` を使用する必要があります。

#### `allow_future`

このページに "未来" のオブジェクトを含めるかどうかを指定する真偽値です。"未来" とは `date_field` で指定されたフィールドが現在の日時よりも大きいオブジェクトを意味します。デフォルトでは `False` です。

#### `get_date_field()`

このビューが操作する日付データを含むフィールドの名前を返します。デフォルトでは [`date_field`](#django.views.generic.dates.DateMixin.date_field) を返します。

#### `get_allow_future()`

このページに "未来" のオブジェクトを含めるかどうかを判定します。ここで "未来" とは `date_field` で指定されたフィールドが現在の日時よりも大きいオブジェクトを意味します。デフォルトでは [`allow_future`](#django.views.generic.dates.DateMixin.allow_future) を返します。

## `BaseDateListView`

#### `class BaseDateListView`

すべての日付ベースのビューに共通の動作を提供する基本クラスです。通常は [`BaseDateListView`](#django.views.generic.dates.BaseDateListView) をインスタンス化する理由はないでしょう。代わりにサブクラスをインスタンス化してください。

このビュー（とそのサブクラス）が実行されている間、`self.object_list` にはビューが操作しているオブジェクトのリストが格納され、`self.date_list` にはデータが利用可能な日付のリストが格納されます。

**ミックスイン**

- [`DateMixin`](#django.views.generic.dates.DateMixin)
- [`MultipleObjectMixin`](/ja/6.0/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin)

**メソッドと属性**

#### `allow_empty`

オブジェクトがない場合にページを表示するかどうかを指定する真偽値。これが `True` でオブジェクトがない場合、ビューは 404 を返す代わりに空のページを表示します。

これは [`django.views.generic.list.MultipleObjectMixin.allow_empty`](/ja/6.0/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin.allow_empty) と同様ですが、デフォルト値は `False` です。

#### `date_list_period`

**オプション** `date_list` の集計期間を定義する文字列。 `'year'` (デフォルト)、`'month'`、`'day'` のいずれかを指定します。

#### `get_dated_items()`

(`date_list`, `object_list`, `extra_context`) を含む 3-タプルを返します。

`date_list` はデータが利用可能な日付のリストです。 `object_list` はオブジェクトのリストです。 `extra_context` はコンテキストデータの辞書で、 [`MultipleObjectMixin`](/ja/6.0/ref/class-based-views/mixins-multiple-object/#django.views.generic.list.MultipleObjectMixin) によって提供されるコンテキストデータに追加されます。

#### `get_dated_queryset(**lookup)`

`lookup` で定義したクエリ引数でフィルタしたクエリセットを返します。 `allow_empty` や `allow_future` などのクエリセットの制限を強制します。

#### `get_date_list_period()`

`date_list` の集計期間を返します。 デフォルトでは [`date_list_period`](#django.views.generic.dates.BaseDateListView.date_list_period) を返します。

#### `get_date_list(queryset, date_type=None, ordering='ASC')`

`queryset` がエントリを含む `date_type` 型の日付のリストを返します。 たとえば、 `get_date_list(qs, 'year')` は `qs` がエントリを持つ年のリストを返します。もし `date_type` が指定されなかった場合、 [`get_date_list_period()`](#django.views.generic.dates.BaseDateListView.get_date_list_period) の結果が使用されます。`date_type` と `ordering` は [`QuerySet.dates()`](/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.dates) に渡されます。
