{"title":"モデルフィールドリファレンス","version":"6.0","locale":"ja","docname":"ref/models/fields","url":"/ja/6.0/ref/models/fields/","canonical":"https://djangodocs.dev/ja/6.0/ref/models/fields/","summary":"このドキュメントには、Django が提供するフィールドオプション field options とフィールド型 field types を含む、Field のすべての API リファレンスが記載されてい…","html":"<section id=\"module-django.db.models.fields\">\n<span id=\"model-field-reference\"></span><h1>モデルフィールドリファレンス<a class=\"heading-anchor\" href=\"#module-django.db.models.fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>このドキュメントには、Django が提供するフィールドオプション <a class=\"reference internal\" href=\"#field-options\">field options</a> とフィールド型 <a class=\"reference internal\" href=\"#field-types\">field types</a> を含む、<a class=\"reference internal\" href=\"#django.db.models.Field\" title=\"django.db.models.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> のすべての API リファレンスが記載されています。</p>\n<aside class=\"admonition admonition-seealso\" role=\"note\">\n<p class=\"admonition-title\">参考</p>\n<p>組み込みフィールドが目的に合わない場合は、 <a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/django-localflavor/\">django-localflavor</a> (<a class=\"reference external\" href=\"https://django-localflavor.readthedocs.io/\">ドキュメント</a>) を試してみてください。これは、特定の国や文化に役立つさまざまなコードを含んでいます。</p>\n<p>さらに、簡単に <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/\"><span class=\"doc\">あなた自身の独自のモデルフィールドを作ることもできます</span></a>。</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>フィールドは <a class=\"reference internal\" href=\"#module-django.db.models.fields\" title=\"django.db.models.fields: Built-in field types.\"><code class=\"xref py py-mod docutils literal notranslate\">django.db.models.fields</code></a> に定義されていますが、利便性のために <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#module-django.db.models\" title=\"django.db.models\"><code class=\"xref py py-mod docutils literal notranslate\">django.db.models</code></a> にインポートされています。標準的な慣例としては、<code class=\"docutils literal notranslate\">from django.db import models</code> を使用し、フィールドを <code class=\"docutils literal notranslate\">models.&lt;Foo&gt;Field</code> として参照します。</p>\n</aside>\n<section id=\"field-options\">\n<span id=\"common-model-field-options\"></span><h2>フィールドオプション<a class=\"heading-anchor\" href=\"#field-options\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>以下の引数は全てのフィールドタイプで有効です。全て省略可能です。</p>\n<section id=\"null\">\n<h3><code class=\"docutils literal notranslate\">null</code><a class=\"heading-anchor\" href=\"#null\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.null\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">null</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.null\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> の場合、Django はデータベース内に <code class=\"docutils literal notranslate\">NULL</code> として空の値を保持します。デフォルトは <code class=\"docutils literal notranslate\">False</code> です。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> や <a class=\"reference internal\" href=\"#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\">TextField</code></a> などの文字列ベースのフィールドでは、 <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> の使用は避けてください。Django は習慣的に、文字列ベースのフィールドの「データなし」状態には <code class=\"docutils literal notranslate\">NULL</code> ではなく空文字列を用います。文字列ベースのフィールドが <code class=\"docutils literal notranslate\">null=False</code> の場合でも、「データなし」として空文字列は保存できます。 <code class=\"docutils literal notranslate\">null=True</code> の場合は、「データなし」を表す値が NULL と空文字列の 2 通りになります。多くの場合、「データなし」を表す値が 2 つあるのは冗長です。例外として、<a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> に <code class=\"docutils literal notranslate\">unique=True</code> と <code class=\"docutils literal notranslate\">blank=True</code> の両方を設定する場合があります。この状況では、空文字列のオブジェクトを複数保存する際に一意制約違反を避けるため、 <code class=\"docutils literal notranslate\">null=True</code> が必要になります。</p>\n<p>文字列ベースのフィールドでもそれ以外でも、フォーム内で空の値を許可したいときは <code class=\"docutils literal notranslate\">blank=True</code> を指定する必要があります。 <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> パラメーターはデータベースストレージにだけ影響を与えるからです（詳細は <a class=\"reference internal\" href=\"#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank</code></a> を参照）。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>Oracleのデータベースバックエンドを使っているときには、この属性にかかわらず、値 <code class=\"docutils literal notranslate\">NULL</code> が空の文字列を意味するために保持されます。</p>\n</aside>\n</section>\n<section id=\"blank\">\n<h3><code class=\"docutils literal notranslate\">blank</code><a class=\"heading-anchor\" href=\"#blank\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.blank\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">blank</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.blank\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> の場合、フィールドはブランクになることが許容されます。デフォルトは <code class=\"docutils literal notranslate\">False</code> です。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> とは異なる点に注意してください。<a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> が純粋にデータベースに関連する一方で、<a class=\"reference internal\" href=\"#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank</code></a> はバリデーションに関連します。フィールドが <code class=\"docutils literal notranslate\">blank=True</code> を持つ場合、フォームバリデーションは空の値のエントリーを許容します。<code class=\"docutils literal notranslate\">blank=False</code> を持つ場合、フィールドは必須となります。</p>\n<aside class=\"admonition-supplying-missing-values admonition\" role=\"note\">\n<p class=\"admonition-title\">欠損値の補完</p>\n<p><code class=\"docutils literal notranslate\">blank=True</code> は <code class=\"docutils literal notranslate\">null=False</code> のフィールドでも使用できますが、この場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.clean\" title=\"django.db.models.Model.clean\"><code class=\"xref py py-meth docutils literal notranslate\">clean()</code></a> を実装し、欠損値をプログラムで補完する必要があります。</p>\n</aside>\n</section>\n<section id=\"choices\">\n<span id=\"field-choices\"></span><h3><code class=\"docutils literal notranslate\">choices</code><a class=\"heading-anchor\" href=\"#choices\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.choices\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">choices</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.choices\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このフィールドの選択肢として使用するための、以下で説明する形式のマッピングまたはイテラブルです。choices が指定された場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">モデルのバリデーション</span></a> によって強制的に、デフォルトのフォームウィジェットが通常のテキストフィールドの代わりにこれらの選択肢を持つセレクトボックスになります。</p>\n<p>マッピングが指定された場合、キー要素はモデルに設定される実際の値で、2番目の要素は人間が読める名前です。例えば</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>YEAR_IN_SCHOOL_CHOICES <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;FR&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Freshman&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;SO&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Sophomore&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;JR&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Junior&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;SR&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Senior&quot;</span><span class=\"p\">,</span>\n    <span class=\"s2\">&quot;GR&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Graduate&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>また、 <a class=\"reference external\" href=\"https://docs.python.org/3/glossary.html#term-sequence\" title=\"(in Python v3.14)\"><span class=\"xref std std-term\">sequence</span></a> として、ちょうど2つの項目からなるイテラブルを渡すこともできます (例 <code class=\"docutils literal notranslate\">[(A1, B1), (A2, B2), ...]</code>)。各タプルの最初の要素はモデルに設定される実際の値で、2番目の要素は人間が読める名前です。例えば</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>YEAR_IN_SCHOOL_CHOICES <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;FR&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Freshman&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;SO&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Sophomore&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;JR&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Junior&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;SR&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Senior&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;GR&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Graduate&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>また、<code class=\"docutils literal notranslate\">choices</code> は、上記のいずれかのフォーマットを返す引数なしの呼び出し可能オブジェクトとして定義することもできます。例えば</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span> <span class=\"nf\">get_currencies</span><span class=\"p\">():</span>\n    <span class=\"k\">return</span> <span class=\"p\">{</span>i<span class=\"p\">:</span> i <span class=\"k\">for</span> i <span class=\"ow\">in</span> settings<span class=\"o\">.</span>CURRENCIES<span class=\"p\">}</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Expense</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    amount <span class=\"o\">=</span> models<span class=\"o\">.</span>DecimalField<span class=\"p\">(</span>max_digits<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">,</span> decimal_places<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n    currency <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">3</span><span class=\"p\">,</span> choices<span class=\"o\">=</span>get_currencies<span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">choice</code> に呼び出し可能オブジェクトを渡すと、例えば選択肢が以下のような場合に特に便利です：</p>\n<ul class=\"simple\">\n<li><p>同じデータベースや外部データベースのテーブルをクエリしたり、静的ファイルから選択肢にアクセスしたりするような、I/Oバウンド操作の結果（キャッシュされる可能性があります）。</p></li>\n<li><p>ほぼ安定しているが、場合によって、あるいはプロジェクトによって異なる可能性のあるリスト。このカテゴリの例は、通貨、国、言語、タイムゾーンなど、よく知られた値のインベントリを提供するサードパーティのアプリを使用する場合などです。</p></li>\n</ul>\n<p>一般的に、モデルクラスの内部で選択肢を定義し、それぞれの値に適切に名前づけられた定数を定義するのがベストです:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Student</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    FRESHMAN <span class=\"o\">=</span> <span class=\"s2\">&quot;FR&quot;</span>\n    SOPHOMORE <span class=\"o\">=</span> <span class=\"s2\">&quot;SO&quot;</span>\n    JUNIOR <span class=\"o\">=</span> <span class=\"s2\">&quot;JR&quot;</span>\n    SENIOR <span class=\"o\">=</span> <span class=\"s2\">&quot;SR&quot;</span>\n    GRADUATE <span class=\"o\">=</span> <span class=\"s2\">&quot;GR&quot;</span>\n    YEAR_IN_SCHOOL_CHOICES <span class=\"o\">=</span> <span class=\"p\">{</span>\n        FRESHMAN<span class=\"p\">:</span> <span class=\"s2\">&quot;Freshman&quot;</span><span class=\"p\">,</span>\n        SOPHOMORE<span class=\"p\">:</span> <span class=\"s2\">&quot;Sophomore&quot;</span><span class=\"p\">,</span>\n        JUNIOR<span class=\"p\">:</span> <span class=\"s2\">&quot;Junior&quot;</span><span class=\"p\">,</span>\n        SENIOR<span class=\"p\">:</span> <span class=\"s2\">&quot;Senior&quot;</span><span class=\"p\">,</span>\n        GRADUATE<span class=\"p\">:</span> <span class=\"s2\">&quot;Graduate&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">}</span>\n    year_in_school <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>\n        max_length<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span>\n        choices<span class=\"o\">=</span>YEAR_IN_SCHOOL_CHOICES<span class=\"p\">,</span>\n        default<span class=\"o\">=</span>FRESHMAN<span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">is_upperclass</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>year_in_school <span class=\"ow\">in</span> <span class=\"p\">{</span><span class=\"bp\">self</span><span class=\"o\">.</span>JUNIOR<span class=\"p\">,</span> <span class=\"bp\">self</span><span class=\"o\">.</span>SENIOR<span class=\"p\">}</span>\n</code></pre></div>\n<p>モデルクラスの外側で選択肢リストを定義し、それを参照することもできますが、モデルクラスの内側で選択肢と各選択肢の名前を定義することで、その情報を使用するクラスで保持し、選択肢を参照しやすくなります（例えば、<code class=\"docutils literal notranslate\">Student.SOPHOMORE</code> は <code class=\"docutils literal notranslate\">Student</code> モデルがインポートされていればどこでも動作します）。</p>\n<p id=\"field-choices-named-groups\">利用可能な選択肢を、組織化のために名前付きグループにまとめることもできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>MEDIA_CHOICES <span class=\"o\">=</span> <span class=\"p\">{</span>\n    <span class=\"s2\">&quot;Audio&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;vinyl&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Vinyl&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;cd&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;CD&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">},</span>\n    <span class=\"s2\">&quot;Video&quot;</span><span class=\"p\">:</span> <span class=\"p\">{</span>\n        <span class=\"s2\">&quot;vhs&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;VHS Tape&quot;</span><span class=\"p\">,</span>\n        <span class=\"s2\">&quot;dvd&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;DVD&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">},</span>\n    <span class=\"s2\">&quot;unknown&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;Unknown&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">}</span>\n</code></pre></div>\n<p>マッピングのキーはグループに適用する名前であり、値はそのグループ内の選択肢で、フィールドの値とオプションの人間が読める名前からなります。グループ化されたオプションは、1つのマッピングの中でグループ化されていないオプションと組み合わせることができます（この例の <code class=\"docutils literal notranslate\">&quot;unknown&quot;</code> オプションのように）。</p>\n<p>2値タプルのリストなど、シーケンスを使うこともできます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>MEDIA_CHOICES <span class=\"o\">=</span> <span class=\"p\">[</span>\n    <span class=\"p\">(</span>\n        <span class=\"s2\">&quot;Audio&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">(</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;vinyl&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Vinyl&quot;</span><span class=\"p\">),</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;cd&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;CD&quot;</span><span class=\"p\">),</span>\n        <span class=\"p\">),</span>\n    <span class=\"p\">),</span>\n    <span class=\"p\">(</span>\n        <span class=\"s2\">&quot;Video&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">(</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;vhs&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;VHS Tape&quot;</span><span class=\"p\">),</span>\n            <span class=\"p\">(</span><span class=\"s2\">&quot;dvd&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;DVD&quot;</span><span class=\"p\">),</span>\n        <span class=\"p\">),</span>\n    <span class=\"p\">),</span>\n    <span class=\"p\">(</span><span class=\"s2\">&quot;unknown&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Unknown&quot;</span><span class=\"p\">),</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>なお、choices はリストやタプルである必要はなく、任意のシーケンスオブジェクトでも構いません。これにより、選択肢を動的に構築できます。しかし、 <a class=\"reference internal\" href=\"#django.db.models.Field.choices\" title=\"django.db.models.Field.choices\"><code class=\"xref py py-attr docutils literal notranslate\">choices</code></a> をハックして動的にするよりは、 <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> を持つ適切なデータベーステーブルを使ったほうがいいでしょう。 <a class=\"reference internal\" href=\"#django.db.models.Field.choices\" title=\"django.db.models.Field.choices\"><code class=\"xref py py-attr docutils literal notranslate\">choices</code></a> はあまり変更されない静的なデータのためのものです。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">choices</code> の順番を変更すると、変更のたびに新しいマイグレーションが生成されます。</p>\n</aside>\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.choices\" title=\"django.db.models.Field.choices\"><code class=\"xref py py-attr docutils literal notranslate\">choices</code></a> が設定されている各モデルフィールドに対して、 Django は選択肢を2値タプルのリストに正規化し、フィールドの現在の値に対して、 人間が読める名前を取得するメソッドを追加します。データベース API ドキュメントの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.get_FOO_display\" title=\"django.db.models.Model.get_FOO_display\"><code class=\"xref py py-meth docutils literal notranslate\">get_FOO_display()</code></a> を参照してください。</p>\n<p id=\"field-choices-blank-label\">フィールドに <a class=\"reference internal\" href=\"#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\">default</code></a> とともに <a class=\"reference internal\" href=\"#django.db.models.Field.blank\" title=\"django.db.models.Field.blank\"><code class=\"xref py py-attr docutils literal notranslate\">blank=False</code></a> が指定されない限り、セレクトボックスには <code class=\"docutils literal notranslate\">&quot;---------&quot;</code> を含むラベルが表示されます。この動作をオーバーライドするには、たとえば <code class=\"docutils literal notranslate\">(None, &quot;表示したい文字列&quot;)</code> のように <code class=\"docutils literal notranslate\">None</code> を含むタプルを <code class=\"docutils literal notranslate\">choices</code> に追加してください。もしくは、 <code class=\"docutils literal notranslate\">None</code> の代わりに空の文字列を使うこともできます。これは特に <a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> などに適しています。</p>\n<section id=\"enumeration-types\">\n<span id=\"field-choices-enum-types\"></span><h4>列挙型<a class=\"heading-anchor\" href=\"#enumeration-types\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>さらに Django には、選択肢を簡潔に定義するためにサブクラス化できる列挙型があります：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.utils.translation</span> <span class=\"kn\">import</span> gettext_lazy <span class=\"k\">as</span> _\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Student</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">YearInSchool</span><span class=\"p\">(</span>models<span class=\"o\">.</span>TextChoices<span class=\"p\">):</span>\n        FRESHMAN <span class=\"o\">=</span> <span class=\"s2\">&quot;FR&quot;</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Freshman&quot;</span><span class=\"p\">)</span>\n        SOPHOMORE <span class=\"o\">=</span> <span class=\"s2\">&quot;SO&quot;</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Sophomore&quot;</span><span class=\"p\">)</span>\n        JUNIOR <span class=\"o\">=</span> <span class=\"s2\">&quot;JR&quot;</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Junior&quot;</span><span class=\"p\">)</span>\n        SENIOR <span class=\"o\">=</span> <span class=\"s2\">&quot;SR&quot;</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Senior&quot;</span><span class=\"p\">)</span>\n        GRADUATE <span class=\"o\">=</span> <span class=\"s2\">&quot;GR&quot;</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Graduate&quot;</span><span class=\"p\">)</span>\n\n    year_in_school <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>\n        max_length<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span>\n        choices<span class=\"o\">=</span>YearInSchool<span class=\"p\">,</span>\n        default<span class=\"o\">=</span>YearInSchool<span class=\"o\">.</span>FRESHMAN<span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n\n    <span class=\"k\">def</span> <span class=\"nf\">is_upperclass</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"bp\">self</span><span class=\"o\">.</span>year_in_school <span class=\"ow\">in</span> <span class=\"p\">{</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>YearInSchool<span class=\"o\">.</span>JUNIOR<span class=\"p\">,</span>\n            <span class=\"bp\">self</span><span class=\"o\">.</span>YearInSchool<span class=\"o\">.</span>SENIOR<span class=\"p\">,</span>\n        <span class=\"p\">}</span>\n</code></pre></div>\n<p>これらはPythonの標準ライブラリの <a class=\"reference external\" href=\"https://docs.python.org/3/library/enum.html#module-enum\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">enum</code></a> と似たような動作をしますが、若干の変更が加えられています：</p>\n<ul>\n<li><p>列挙型のメンバ値は、具象データ型を構築するときに使う引数のタプルです。Django はこのタプルの末尾に、人間が読める名前、つまり <code class=\"docutils literal notranslate\">label</code> として使われる文字列値を追加することをサポートしています。この <code class=\"docutils literal notranslate\">label</code> は遅延 (Lazy な) 翻訳が可能な文字列です。したがって、ほとんどの場合、メンバの値は <code class=\"docutils literal notranslate\">(value, label)</code> の2値タプルになります。より複雑なデータ型を使用した <a class=\"reference internal\" href=\"#field-choices-enum-subclassing\"><span class=\"std std-ref\">選択肢のサブクラスの例</span></a> については以下を参照してください。タプルが提供されない場合、あるいは最後の項目が（lazyな）文字列でない場合、 <code class=\"docutils literal notranslate\">label</code> はメンバー名から <a class=\"reference internal\" href=\"#field-choices-enum-auto-label\"><span class=\"std std-ref\">自動的に生成</span></a> されます。</p></li>\n<li><p>値には <code class=\"docutils literal notranslate\">.label</code> プロパティが追加され、人間が読める名前を返します。</p></li>\n<li><p>列挙型クラスには、 <code class=\"docutils literal notranslate\">.choices</code>, <code class=\"docutils literal notranslate\">.labels</code>, <code class=\"docutils literal notranslate\">.values</code>, <code class=\"docutils literal notranslate\">.names</code> などのカスタムプロパティが追加されており、これらの列挙型の異なる部分のリストに簡単にアクセスできるようになっています。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>これらのプロパティ名をメンバ名として使用することはできません。</p>\n</aside>\n</li>\n<li><p>The use of <a class=\"reference external\" href=\"https://docs.python.org/3/library/enum.html#enum.unique\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">enum.unique()</code></a> is enforced to ensure that values cannot be\ndefined multiple times. This is unlikely to be expected in choices for a\nfield.</p></li>\n</ul>\n<p>なお、 <code class=\"docutils literal notranslate\">YearInSchool.SENIOR</code>, <code class=\"docutils literal notranslate\">YearInSchool['SENIOR']</code>, <code class=\"docutils literal notranslate\">YearInSchool('SR')</code> を使用して列挙型のメンバにアクセスしたり、メンバの <code class=\"docutils literal notranslate\">.name</code> と <code class=\"docutils literal notranslate\">.value</code> プロパティを参照したりすることは期待通りに動作します。</p>\n<p id=\"field-choices-enum-auto-label\">人が読める名前を翻訳する必要がない場合は、メンバ名から推測してそれらを自動設定させることができます（アンダースコアをスペースに置き換え、タイトルケースを使用します）：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span><span class=\"k\">class</span> <span class=\"nc\">Vehicle</span><span class=\"p\">(</span>models<span class=\"o\">.</span>TextChoices<span class=\"p\">):</span>\n<span class=\"gp\">... </span>    CAR <span class=\"o\">=</span> <span class=\"s2\">&quot;C&quot;</span>\n<span class=\"gp\">... </span>    TRUCK <span class=\"o\">=</span> <span class=\"s2\">&quot;T&quot;</span>\n<span class=\"gp\">... </span>    JET_SKI <span class=\"o\">=</span> <span class=\"s2\">&quot;J&quot;</span>\n<span class=\"gp\">...</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Vehicle<span class=\"o\">.</span>JET_SKI<span class=\"o\">.</span>label\n<span class=\"go\">&#39;Jet Ski&#39;</span>\n</code></pre></div>\n<p>列挙値が整数である必要があるケースは非常に多いので、Django は <code class=\"docutils literal notranslate\">IntegerChoices</code> クラスを用意しています。例えば</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Card</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"k\">class</span> <span class=\"nc\">Suit</span><span class=\"p\">(</span>models<span class=\"o\">.</span>IntegerChoices<span class=\"p\">):</span>\n        DIAMOND <span class=\"o\">=</span> <span class=\"mi\">1</span>\n        SPADE <span class=\"o\">=</span> <span class=\"mi\">2</span>\n        HEART <span class=\"o\">=</span> <span class=\"mi\">3</span>\n        CLUB <span class=\"o\">=</span> <span class=\"mi\">4</span>\n\n    suit <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">(</span>choices<span class=\"o\">=</span>Suit<span class=\"p\">)</span>\n</code></pre></div>\n<p>また、 <a class=\"reference external\" href=\"https://docs.python.org/3/howto/enum.html#functional-api\">Enum Functional API</a> を利用することもできます。この場合、ラベルは上記のように自動的に生成されます：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>MedalType <span class=\"o\">=</span> models<span class=\"o\">.</span>TextChoices<span class=\"p\">(</span><span class=\"s2\">&quot;MedalType&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;GOLD SILVER BRONZE&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>MedalType<span class=\"o\">.</span>choices\n<span class=\"go\">[(&#39;GOLD&#39;, &#39;Gold&#39;), (&#39;SILVER&#39;, &#39;Silver&#39;), (&#39;BRONZE&#39;, &#39;Bronze&#39;)]</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Place <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerChoices<span class=\"p\">(</span><span class=\"s2\">&quot;Place&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;FIRST SECOND THIRD&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>Place<span class=\"o\">.</span>choices\n<span class=\"go\">[(1, &#39;First&#39;), (2, &#39;Second&#39;), (3, &#39;Third&#39;)]</span>\n</code></pre></div>\n<p id=\"field-choices-enum-subclassing\">もし <code class=\"docutils literal notranslate\">int</code> や <code class=\"docutils literal notranslate\">str</code> 以外の具象データ型のサポートが必要であれば、 <code class=\"docutils literal notranslate\">Choices</code> と必要な具象データ型、例えば <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">date</code></a> を <a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> で使用するようにサブクラス化できます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">MoonLandings</span><span class=\"p\">(</span>datetime<span class=\"o\">.</span>date<span class=\"p\">,</span> models<span class=\"o\">.</span>Choices<span class=\"p\">):</span>\n    APOLLO_11 <span class=\"o\">=</span> <span class=\"mi\">1969</span><span class=\"p\">,</span> <span class=\"mi\">7</span><span class=\"p\">,</span> <span class=\"mi\">20</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 11 (Eagle)&quot;</span>\n    APOLLO_12 <span class=\"o\">=</span> <span class=\"mi\">1969</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"mi\">19</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 12 (Intrepid)&quot;</span>\n    APOLLO_14 <span class=\"o\">=</span> <span class=\"mi\">1971</span><span class=\"p\">,</span> <span class=\"mi\">2</span><span class=\"p\">,</span> <span class=\"mi\">5</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 14 (Antares)&quot;</span>\n    APOLLO_15 <span class=\"o\">=</span> <span class=\"mi\">1971</span><span class=\"p\">,</span> <span class=\"mi\">7</span><span class=\"p\">,</span> <span class=\"mi\">30</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 15 (Falcon)&quot;</span>\n    APOLLO_16 <span class=\"o\">=</span> <span class=\"mi\">1972</span><span class=\"p\">,</span> <span class=\"mi\">4</span><span class=\"p\">,</span> <span class=\"mi\">21</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 16 (Orion)&quot;</span>\n    APOLLO_17 <span class=\"o\">=</span> <span class=\"mi\">1972</span><span class=\"p\">,</span> <span class=\"mi\">12</span><span class=\"p\">,</span> <span class=\"mi\">11</span><span class=\"p\">,</span> <span class=\"s2\">&quot;Apollo 17 (Challenger)&quot;</span>\n</code></pre></div>\n<p>さらに注意すべき点がいくつかあります：</p>\n<ul>\n<li><p>列挙型は <a class=\"reference internal\" href=\"#field-choices-named-groups\"><span class=\"std std-ref\">名前付きグループ</span></a> をサポートしていません。</p></li>\n<li><p>具体的なデータ型を持つ列挙型では、すべての値がそのデータ型に一致する必要があるため、 <a class=\"reference internal\" href=\"#field-choices-blank-label\"><span class=\"std std-ref\">blank label</span></a> をオーバーライドする際に、 <code class=\"docutils literal notranslate\">None</code> という値を持つメンバを作成することはできません。代わりに、クラスに <code class=\"docutils literal notranslate\">__empty__</code> 属性を設定します：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Answer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>IntegerChoices<span class=\"p\">):</span>\n    NO <span class=\"o\">=</span> <span class=\"mi\">0</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;No&quot;</span><span class=\"p\">)</span>\n    YES <span class=\"o\">=</span> <span class=\"mi\">1</span><span class=\"p\">,</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;Yes&quot;</span><span class=\"p\">)</span>\n\n    __empty__ <span class=\"o\">=</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;(Unknown)&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n</li>\n</ul>\n</section>\n</section>\n<section id=\"db-column\">\n<h3><code class=\"docutils literal notranslate\">db_column</code><a class=\"heading-anchor\" href=\"#db-column\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_column\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">db_column</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_column\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このフィールドを使用するためのデータベースのカラムの名前です。もし与えられなければ、Django はフィールド名を使用します。</p>\n<p>データベースのカラム名が SQL の予約語だったり、Python の変数名として使用できない文字 (特に多いのがハイフン) が含まれていたとしても大丈夫です。Django はカラムとテーブルの名前を自動的にクオートして処理してくれます。</p>\n</section>\n<section id=\"db-comment\">\n<h3><code class=\"docutils literal notranslate\">db_comment</code><a class=\"heading-anchor\" href=\"#db-comment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_comment\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">db_comment</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_comment\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このフィールドに使うデータベースカラムのコメントです。あなたの Django コードを見ていないような、データベースに直接アクセスできる人のために、フィールドをドキュメント化するのに便利です。例えば：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>pub_date <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>\n    db_comment<span class=\"o\">=</span><span class=\"s2\">&quot;Date and time when the article was published&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</section>\n<section id=\"db-default\">\n<h3><code class=\"docutils literal notranslate\">db_default</code><a class=\"heading-anchor\" href=\"#db-default\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_default\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">db_default</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_default\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>データベースによって計算されるこのフィールドのデフォルト値。これはリテラル値でも、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/database-functions/#django.db.models.functions.Now\" title=\"django.db.models.functions.Now\"><code class=\"xref py py-class docutils literal notranslate\">Now</code></a> のようなデータベース関数でも構いません：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>created <span class=\"o\">=</span> models<span class=\"o\">.</span>DateTimeField<span class=\"p\">(</span>db_default<span class=\"o\">=</span>Now<span class=\"p\">())</span>\n</code></pre></div>\n<p>リテラルやデータベース関数から構成する限り、より複雑な式を使用できます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>month_due <span class=\"o\">=</span> models<span class=\"o\">.</span>DateField<span class=\"p\">(</span>\n    db_default<span class=\"o\">=</span>TruncMonth<span class=\"p\">(</span>\n        Now<span class=\"p\">()</span> <span class=\"o\">+</span> timedelta<span class=\"p\">(</span>days<span class=\"o\">=</span><span class=\"mi\">90</span><span class=\"p\">),</span>\n        output_field<span class=\"o\">=</span>models<span class=\"o\">.</span>DateField<span class=\"p\">(),</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>データベースのデフォルトは、他のフィールドやモデルを参照することはできません。例えば、これは無効です：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>end <span class=\"o\">=</span> models<span class=\"o\">.</span>IntegerField<span class=\"p\">(</span>db_default<span class=\"o\">=</span>F<span class=\"p\">(</span><span class=\"s2\">&quot;start&quot;</span><span class=\"p\">)</span> <span class=\"o\">+</span> <span class=\"mi\">50</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>もし <code class=\"docutils literal notranslate\">db_default</code> と <a class=\"reference internal\" href=\"#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\">Field.default</code></a> の両方が指定された場合、Python コードでインスタンスを作成する際には <code class=\"docutils literal notranslate\">default</code> が優先されます。データベースレベルでも <code class=\"docutils literal notranslate\">db_default</code> が設定され、ORM の外部で行を挿入するときや、マイグレーションで新しいフィールドを追加するときに使用されます。</p>\n<p>フィールドに <code class=\"docutils literal notranslate\">db_default</code> は設定されているが <code class=\"docutils literal notranslate\">default</code> が設定されておらず、フィールドに値が割り当てられていない場合、保存されていないモデルインスタンスでは <code class=\"docutils literal notranslate\">DatabaseDefault</code> オブジェクトがフィールドの値として返されます。フィールドの実際の値は、モデルインスタンスが保存されたときにデータベースによって決定されます。</p>\n</section>\n<section id=\"db-index\">\n<h3><code class=\"docutils literal notranslate\">db_index</code><a class=\"heading-anchor\" href=\"#db-index\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_index\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">db_index</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_index\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> の場合、データベースインデックスがこのフィールドのために生成されます。</p>\n<aside class=\"admonition-use-the-attr-options-indexes-option-instead admonition\" role=\"note\">\n<p class=\"admonition-title\">代わりに <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.indexes\" title=\"django.db.models.Options.indexes\"><code class=\"xref py py-attr docutils literal notranslate\">indexes</code></a> オプションを使用してください。</p>\n<p>可能であれば、代わりに <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.indexes\" title=\"django.db.models.Options.indexes\"><code class=\"xref py py-attr docutils literal notranslate\">Meta.indexes</code></a> オプションを使用してください。ほとんどの場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.indexes\" title=\"django.db.models.Options.indexes\"><code class=\"xref py py-attr docutils literal notranslate\">indexes</code></a> は <code class=\"docutils literal notranslate\">db_index</code> よりも多くの機能を提供します。 <code class=\"docutils literal notranslate\">db_index</code> は将来廃止される可能性があります。</p>\n</aside>\n</section>\n<section id=\"db-tablespace\">\n<h3><code class=\"docutils literal notranslate\">db_tablespace</code><a class=\"heading-anchor\" href=\"#db-tablespace\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_tablespace\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">db_tablespace</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_tablespace\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このフィールドにインデックスが作成されている場合に、このフィールドのインデックスに使用する <a class=\"reference internal\" href=\"/ja/6.0/topics/db/tablespaces/\"><span class=\"doc\">データベース テーブル空間</span></a> の名前です。デフォルトはプロジェクトの <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_INDEX_TABLESPACE\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_INDEX_TABLESPACE</code></a> が設定されている場合はその設定値、またはモデルの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.db_tablespace\" title=\"django.db.models.Options.db_tablespace\"><code class=\"xref py py-attr docutils literal notranslate\">db_tablespace</code></a> が設定されている場合はその設定値です。バックエンドがインデックスのテーブル空間をサポートしていない場合、このオプションは無視されます。</p>\n</section>\n<section id=\"default\">\n<h3><code class=\"docutils literal notranslate\">default</code><a class=\"heading-anchor\" href=\"#default\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.default\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">default</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.default\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>そのフィールドのデフォルト値です。このオプションには特定の値もしくは呼び出し可能オブジェクトを渡すことができます。もし渡した値が呼び出し可能であれば新しくオブジェクトが生成される度に呼び出されます。</p>\n<p>デフォルト値はミュータブルなオブジェクト（モデルのインスタンス、 <code class=\"docutils literal notranslate\">list</code> 、 <code class=\"docutils literal notranslate\">set</code> など）にはできません。そのオブジェクトの同じインスタンスへの参照が、すべての新しいモデルインスタンスのデフォルト値として使用されてしまうからです。代わりに、必要なデフォルト値を呼び出し可能オブジェクトでラップします。例えば、 <a class=\"reference internal\" href=\"#django.db.models.JSONField\" title=\"django.db.models.JSONField\"><code class=\"xref py py-class docutils literal notranslate\">JSONField</code></a> に対してデフォルトの <code class=\"docutils literal notranslate\">dict</code> を指定したい場合、下記のような関数を使用します：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span> <span class=\"nf\">contact_default</span><span class=\"p\">():</span>\n    <span class=\"k\">return</span> <span class=\"p\">{</span><span class=\"s2\">&quot;email&quot;</span><span class=\"p\">:</span> <span class=\"s2\">&quot;to1@example.com&quot;</span><span class=\"p\">}</span>\n\n\ncontact_info <span class=\"o\">=</span> JSONField<span class=\"p\">(</span><span class=\"s2\">&quot;ContactInfo&quot;</span><span class=\"p\">,</span> default<span class=\"o\">=</span>contact_default<span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">lambda</code> は <a class=\"reference internal\" href=\"/ja/6.0/topics/migrations/#migration-serializing\"><span class=\"std std-ref\">マイグレーションでシリアライズ</span></a> できないので、<code class=\"docutils literal notranslate\">default</code> のようなフィールドオプションには使えません。その他の注意点についてはドキュメントを参照してください。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> のようにモデルインスタンスにマッピングされるフィールドの場合、デフォルトはモデルインスタンスではなく、参照するフィールドの値 (<a class=\"reference internal\" href=\"#django.db.models.ForeignKey.to_field\" title=\"django.db.models.ForeignKey.to_field\"><code class=\"xref py py-attr docutils literal notranslate\">to_field</code></a> が設定されていない限り <code class=\"docutils literal notranslate\">pk</code>) になります。</p>\n<p>デフォルト値は、新しいモデルインスタンスが作成され、フィールドに値が提供されていない場合に使用されます。フィールドが主キーの場合、フィールドが <code class=\"docutils literal notranslate\">None</code> に設定されているときにもデフォルト値が使われます。</p>\n<p>デフォルト値は <a class=\"reference internal\" href=\"#django.db.models.Field.db_default\" title=\"django.db.models.Field.db_default\"><code class=\"xref py py-attr docutils literal notranslate\">Field.db_default</code></a> でデータベースレベルで設定することもできます。</p>\n</section>\n<section id=\"editable\">\n<h3><code class=\"docutils literal notranslate\">editable</code><a class=\"heading-anchor\" href=\"#editable\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.editable\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">editable</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.editable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">False</code> の場合、フィールドは管理サイトやその他の <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> において表示されません。このとき <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#validating-objects\"><span class=\"std std-ref\">model validation</span></a> の過程でもスキップされます。デフォルトは <code class=\"docutils literal notranslate\">True</code> です。</p>\n</section>\n<section id=\"error-messages\">\n<h3><code class=\"docutils literal notranslate\">error_messages</code><a class=\"heading-anchor\" href=\"#error-messages\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.error_messages\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">error_messages</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.error_messages\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>引数 <code class=\"docutils literal notranslate\">error_messages</code> を指定すると、フィールドが表示するデフォルトのメッセージを上書きできます。オーバーライドしたいエラーメッセージにマッチするキーを持つ辞書を渡してください。</p>\n<p>エラーメッセージのキーには <code class=\"docutils literal notranslate\">null</code>, <code class=\"docutils literal notranslate\">blank</code>, <code class=\"docutils literal notranslate\">invalid</code>, <code class=\"docutils literal notranslate\">invalid_choice</code>, <code class=\"docutils literal notranslate\">unique</code>, <code class=\"docutils literal notranslate\">unique_for_date</code> があります。以下の <a class=\"reference internal\" href=\"#field-types\">Field types</a> セクションで説明する各フィールドには、追加のエラーメッセージキーが指定されています。</p>\n<p>これらのエラーメッセージはフォームに反映されないことがよくあります。詳細は <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#considerations-regarding-model-errormessages\"><span class=\"std std-ref\">モデルの error_messages についての注意</span></a> を参照してください。</p>\n</section>\n<section id=\"help-text\">\n<h3><code class=\"docutils literal notranslate\">help_text</code><a class=\"heading-anchor\" href=\"#help-text\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.help_text\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">help_text</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.help_text\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>フォームウィジェットと共に表示される &quot;補助&quot; テキストになります。この値はフィールドがフォームとして利用されない場合でもドキュメント化する際に有用です。</p>\n<p>この値は自動生成のフォームではHTMLエスケープ <em>されません</em> 。そのため、 <a class=\"reference internal\" href=\"#django.db.models.Field.help_text\" title=\"django.db.models.Field.help_text\"><code class=\"xref py py-attr docutils literal notranslate\">help_text</code></a> にはHTMLが使えます。例：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>help_text <span class=\"o\">=</span> <span class=\"s2\">&quot;Please use the following format: &lt;em&gt;YYYY-MM-DD&lt;/em&gt;.&quot;</span>\n</code></pre></div>\n<p>あるいは、プレーンテキストを使い、 <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.html.escape\" title=\"django.utils.html.escape\"><code class=\"xref py py-func docutils literal notranslate\">django.utils.html.escape()</code></a> で HTML の特殊文字をエスケープすることもできます。クロスサイトスクリプティング攻撃を避けるために、信頼できないユーザから来る可能性のあるヘルプテキストは必ずエスケープしてください。</p>\n</section>\n<section id=\"primary-key\">\n<h3><code class=\"docutils literal notranslate\">primary_key</code><a class=\"heading-anchor\" href=\"#primary-key\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.primary_key\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">primary_key</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.primary_key\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> の場合、設定したフィールドはそのモデルの主キーとなります。</p>\n<p>モデル内のいずれのフィールドにも <code class=\"docutils literal notranslate\">primary_key=True</code> を指定せず、かつ複合主キーを定義していない場合、 Django は主キーを保持するためのフィールドを自動的に追加します。したがって、既定の主キー動作を上書きしたくなければ、どのフィールドにも <code class=\"docutils literal notranslate\">primary_key=True</code> を設定する必要はありません。自動作成される主キーの型は、アプリ単位では <a class=\"reference internal\" href=\"/ja/6.0/ref/applications/#django.apps.AppConfig.default_auto_field\" title=\"django.apps.AppConfig.default_auto_field\"><code class=\"xref py py-attr docutils literal notranslate\">AppConfig.default_auto_field</code></a> 、グローバルには <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-DEFAULT_AUTO_FIELD\"><code class=\"xref std std-setting docutils literal notranslate\">DEFAULT_AUTO_FIELD</code></a> 設定で指定できます。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">自動インクリメントの主キーフィールド</span></a> を参照してください。</p>\n<p><code class=\"docutils literal notranslate\">primary_key=True</code> は <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null=False</code></a> および <a class=\"reference internal\" href=\"#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">unique=True</code></a> を含意します。1 つのモデルで <code class=\"docutils literal notranslate\">primary_key=True</code> を設定できるフィールドは 1 つだけです。この不変条件を維持するため、複合主キーは、すべてのフィールドにこのフラグを <code class=\"docutils literal notranslate\">True</code> と設定するのではなく、<a class=\"reference internal\" href=\"#django.db.models.CompositePrimaryKey\" title=\"django.db.models.CompositePrimaryKey\"><code class=\"xref py py-class docutils literal notranslate\">CompositePrimaryKey</code></a> を使用して定義しなければなりません。</p>\n<p>主キーフィールドは読み取り専用です。既存のオブジェクトの主キーの値を変更して保存すると、古いオブジェクトはそのままで新しいオブジェクトが作成されます。</p>\n<p>オブジェクトを <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">削除する</code></a> 際に、主キーフィールドは <code class=\"docutils literal notranslate\">None</code> に設定されます。</p>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p><code class=\"docutils literal notranslate\">CompositePrimaryKey</code> フィールドが追加されました。</p>\n</aside>\n</section>\n<section id=\"unique\">\n<h3><code class=\"docutils literal notranslate\">unique</code><a class=\"heading-anchor\" href=\"#unique\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.unique\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">unique</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.unique\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">True</code> の場合、そのフィールドはテーブル上で一意となる制約を受けます。</p>\n<p>これはデータベースレベルとモデルのバリデーションで強制されます。 <a class=\"reference internal\" href=\"#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">unique</code></a> フィールドの値が重複しているモデルを保存しようとすると、モデルの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> メソッドによって <a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">django.db.IntegrityError</code></a> が発生します。</p>\n<p>このオプションは <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> と <a class=\"reference internal\" href=\"#django.db.models.OneToOneField\" title=\"django.db.models.OneToOneField\"><code class=\"xref py py-class docutils literal notranslate\">OneToOneField</code></a> 以外の全てのフィールドタイプで有効です。</p>\n<p><code class=\"docutils literal notranslate\">unique</code> が <code class=\"docutils literal notranslate\">True</code> の場合、<a class=\"reference internal\" href=\"#django.db.models.Field.db_index\" title=\"django.db.models.Field.db_index\"><code class=\"xref py py-attr docutils literal notranslate\">db_index</code></a> を指定する必要はないことに注意してください。なぜなら <code class=\"docutils literal notranslate\">unique</code> がインデックスの作成を意味するからです。</p>\n</section>\n<section id=\"unique-for-date\">\n<h3><code class=\"docutils literal notranslate\">unique_for_date</code><a class=\"heading-anchor\" href=\"#unique-for-date\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.unique_for_date\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">unique_for_date</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.unique_for_date\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>これを <a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> または <a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> の名前に設定すると、このフィールドが日付フィールドの値に対して一意であることを要求します。</p>\n<p>例えば、 <code class=\"docutils literal notranslate\">title</code> フィールドに <code class=\"docutils literal notranslate\">unique_for_date=&quot;pub_date&quot;</code> を指定した場合、 Django は同じ <code class=\"docutils literal notranslate\">title</code> と <code class=\"docutils literal notranslate\">pub_date</code> を持つ 2 つのレコードの入力を許可しません。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> を指すように設定した場合は、フィールドの日付部分のみが考慮されることに注意してください。また、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-USE_TZ\"><code class=\"xref std std-setting docutils literal notranslate\">USE_TZ</code></a> が <code class=\"docutils literal notranslate\">True</code> の場合、オブジェクトの保存時に <a class=\"reference internal\" href=\"/ja/6.0/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">カレントタイムゾーン</span></a> でチェックが行われます。</p>\n<p>This is enforced by <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.validate_unique\" title=\"django.db.models.Model.validate_unique\"><code class=\"xref py py-meth docutils literal notranslate\">Model.validate_unique()</code></a> during model validation\nbut not at the database level. If any <a class=\"reference internal\" href=\"#django.db.models.Field.unique_for_date\" title=\"django.db.models.Field.unique_for_date\"><code class=\"xref py py-attr docutils literal notranslate\">unique_for_date</code></a> constraint\ninvolves fields that are not part of a <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> (for\nexample, if one of the fields is listed in <code class=\"docutils literal notranslate\">exclude</code> or has\n<a class=\"reference internal\" href=\"#django.db.models.Field.editable\" title=\"django.db.models.Field.editable\"><code class=\"xref py py-attr docutils literal notranslate\">editable=False</code></a>), <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.validate_unique\" title=\"django.db.models.Model.validate_unique\"><code class=\"xref py py-meth docutils literal notranslate\">Model.validate_unique()</code></a> will\nskip validation for that particular constraint.</p>\n</section>\n<section id=\"unique-for-month\">\n<h3><code class=\"docutils literal notranslate\">unique_for_month</code><a class=\"heading-anchor\" href=\"#unique-for-month\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.unique_for_month\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">unique_for_month</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.unique_for_month\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.unique_for_date\" title=\"django.db.models.Field.unique_for_date\"><code class=\"xref py py-attr docutils literal notranslate\">unique_for_date</code></a> と似ていますが、フィールドが月に対して一意である必要があります。</p>\n</section>\n<section id=\"unique-for-year\">\n<h3><code class=\"docutils literal notranslate\">unique_for_year</code><a class=\"heading-anchor\" href=\"#unique-for-year\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.unique_for_year\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">unique_for_year</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.unique_for_year\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.unique_for_date\" title=\"django.db.models.Field.unique_for_date\"><code class=\"xref py py-attr docutils literal notranslate\">unique_for_date</code></a> や <a class=\"reference internal\" href=\"#django.db.models.Field.unique_for_month\" title=\"django.db.models.Field.unique_for_month\"><code class=\"xref py py-attr docutils literal notranslate\">unique_for_month</code></a> と同様です。</p>\n</section>\n<section id=\"verbose-name\">\n<h3><code class=\"docutils literal notranslate\">verbose_name</code><a class=\"heading-anchor\" href=\"#verbose-name\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.verbose_name\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">verbose_name</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.verbose_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>人間が読めるフィールド名。verbose な名前が指定されていない場合、 Django はフィールドの属性名を使って自動的にフィールドを作成し、アンダースコアをスペースに変換します。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#verbose-field-names\"><span class=\"std std-ref\">verbose なフィールド名</span></a> を参照してください。</p>\n</section>\n<section id=\"validators\">\n<h3><code class=\"docutils literal notranslate\">validators</code><a class=\"heading-anchor\" href=\"#validators\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.validators\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">validators</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.validators\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このフィールドに対して実行するバリデータのリスト。詳細は <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/\"><span class=\"doc\">バリデータのドキュメント</span></a> を参照してください。</p>\n</section>\n</section>\n<section id=\"field-types\">\n<span id=\"model-field-types\"></span><h2>フィールドの型<a class=\"heading-anchor\" href=\"#field-types\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"autofield\">\n<h3><code class=\"docutils literal notranslate\">AutoField</code><a class=\"heading-anchor\" href=\"#autofield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.AutoField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">AutoField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.AutoField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>利用可能な ID に応じて、自動的にインクリメントする <a class=\"reference internal\" href=\"#django.db.models.IntegerField\" title=\"django.db.models.IntegerField\"><code class=\"xref py py-class docutils literal notranslate\">IntegerField</code></a> です。通常は直接使う必要はありません; 指定しない場合は、主キーのフィールドが自動的にモデルに追加されます。<a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#automatic-primary-key-fields\"><span class=\"std std-ref\">自動インクリメントの主キーフィールド</span></a> も参照してください。</p>\n</section>\n<section id=\"bigautofield\">\n<h3><code class=\"docutils literal notranslate\">BigAutoField</code><a class=\"heading-anchor\" href=\"#bigautofield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BigAutoField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BigAutoField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BigAutoField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>64 ビットの数値です。<code class=\"docutils literal notranslate\">1</code> から <code class=\"docutils literal notranslate\">9223372036854775807</code> までの数を扱える以外は、<a class=\"reference internal\" href=\"#django.db.models.AutoField\" title=\"django.db.models.AutoField\"><code class=\"xref py py-class docutils literal notranslate\">AutoField</code></a> と同じです。</p>\n</section>\n<section id=\"bigintegerfield\">\n<h3><code class=\"docutils literal notranslate\">BigIntegerField</code><a class=\"heading-anchor\" href=\"#bigintegerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BigIntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BigIntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BigIntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>64 ビットの整数で、 <a class=\"reference internal\" href=\"#django.db.models.IntegerField\" title=\"django.db.models.IntegerField\"><code class=\"xref py py-class docutils literal notranslate\">IntegerField</code></a> とよく似ていますが、 <code class=\"docutils literal notranslate\">-9223372036854775808</code> から <code class=\"docutils literal notranslate\">9223372036854775807</code> までの数値が入ることが保証されています。このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</code></a> です。</p>\n</section>\n<section id=\"binaryfield\">\n<h3><code class=\"docutils literal notranslate\">BinaryField</code><a class=\"heading-anchor\" href=\"#binaryfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BinaryField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BinaryField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BinaryField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>生のバイナリデータを格納するフィールドです。 <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#bytes\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">bytes</code></a>, <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#bytearray\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">bytearray</code></a> または <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#memoryview\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">memoryview</code></a> を指定できます。</p>\n<p>デフォルトでは、 <code class=\"docutils literal notranslate\">BinaryField</code> は <a class=\"reference internal\" href=\"#django.db.models.Field.editable\" title=\"django.db.models.Field.editable\"><code class=\"xref py py-attr docutils literal notranslate\">editable</code></a> を <code class=\"docutils literal notranslate\">False</code> に設定します。この場合、 <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> に含めることはできません。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BinaryField.max_length\">\n<span class=\"sig-prename descclassname\">BinaryField.</span><span class=\"sig-name descname\">max_length</span><a class=\"heading-anchor\" href=\"#django.db.models.BinaryField.max_length\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オプション。フィールドの最大長 (バイト単位)。最大長は <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.MaxLengthValidator\" title=\"django.core.validators.MaxLengthValidator\"><code class=\"xref py py-class docutils literal notranslate\">MaxLengthValidator</code></a> を使ったDjango のバリデーションで強制されます。</p>\n</dd></dl>\n\n<aside class=\"admonition-abusing-binaryfield admonition\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">BinaryField</code> を誤用する</p>\n<p>ファイルをデータベース内に格納したいと考えるかもしれませんが、99%のケースにおいてそれは悪い設計です。このフィールドは、適切な <a class=\"reference internal\" href=\"/ja/6.0/howto/static-files/\"><span class=\"doc\">静的ファイル</span></a> の取り扱いに対する代替手段では <em>ありません</em> 。</p>\n</aside>\n</section>\n<section id=\"booleanfield\">\n<h3><code class=\"docutils literal notranslate\">BooleanField</code><a class=\"heading-anchor\" href=\"#booleanfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.BooleanField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">BooleanField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.BooleanField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>true/false のフィールドです。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.CheckboxInput\" title=\"django.forms.CheckboxInput\"><code class=\"xref py py-class docutils literal notranslate\">CheckboxInput</code></a> で、 <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null=True</code></a> の場合は <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.NullBooleanSelect\" title=\"django.forms.NullBooleanSelect\"><code class=\"xref py py-class docutils literal notranslate\">NullBooleanSelect</code></a> です。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\">Field.default</code></a> が定義されていないときの <code class=\"docutils literal notranslate\">BooleanField</code> のデフォルト値は <code class=\"docutils literal notranslate\">None</code> です。</p>\n</section>\n<section id=\"compositeprimarykey\">\n<h3><code class=\"docutils literal notranslate\">CompositePrimaryKey</code><a class=\"heading-anchor\" href=\"#compositeprimarykey\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<aside class=\"version-note version-added\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CompositePrimaryKey\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">CompositePrimaryKey</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">*</span>field_names</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.CompositePrimaryKey\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>複合主キーを定義するために用いられる仮想的なフィールドです。</p>\n<p>このフィールドはモデルの <code class=\"docutils literal notranslate\">pk</code> 属性として定義しなければなりません。これが存在する場合、 Django は基盤となるモデルテーブルを複合主キーで作成します。</p>\n<p><code class=\"docutils literal notranslate\">*field_names</code> 引数は主キーを構成する位置フィールド名のリストです。</p>\n<p>詳細は <a class=\"reference internal\" href=\"/ja/6.0/topics/composite-primary-key/\"><span class=\"doc\">複合主キー</span></a> を参照してください。</p>\n</section>\n<section id=\"charfield\">\n<h3><code class=\"docutils literal notranslate\">CharField</code><a class=\"heading-anchor\" href=\"#charfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CharField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">CharField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.CharField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>小 - 大サイズの文字列のフィールドです。</p>\n<p>多量のテキストを扱うときは <a class=\"reference internal\" href=\"#django.db.models.TextField\" title=\"django.db.models.TextField\"><code class=\"xref py py-class docutils literal notranslate\">TextField</code></a> を使ってください。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> です。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> には以下の追加引数があります：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CharField.max_length\">\n<span class=\"sig-prename descclassname\">CharField.</span><span class=\"sig-name descname\">max_length</span><a class=\"heading-anchor\" href=\"#django.db.models.CharField.max_length\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドの（文字数の）最大値。 <code class=\"docutils literal notranslate\">max_length</code> はデータベース層および class:~django.core.validators.MaxLengthValidator を使用した Django のバリデーションによる制約を受けます。無制限の <code class=\"docutils literal notranslate\">VARCHAR</code> 列をサポートする PostgreSQL と SQLite を除き、 Django でサポートされるすべてのデータベースバックエンドにおいて必須です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>複数のデータベースバックエンド間で使われるアプリケーションを作る場合は、いくつかのバックエンドで <code class=\"docutils literal notranslate\">max_length</code> に制限があることに注意しなければなりません。詳しくは <a class=\"reference internal\" href=\"/ja/6.0/ref/databases/\"><span class=\"doc\">データベースバックエンドの注意事項</span></a> を参照してください。</p>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"5.2\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 5.2</p><p>SQLite で無制限の <code class=\"docutils literal notranslate\">VARCHAR</code> 列のサポートが追加されました。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CharField.db_collation\">\n<span class=\"sig-prename descclassname\">CharField.</span><span class=\"sig-name descname\">db_collation</span><a class=\"heading-anchor\" href=\"#django.db.models.CharField.db_collation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オプション。フィールドのデータベース照合順序名(collation name)です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>照合順序名は標準化されていません。そのため、これは複数のデータベースバックエンド間でポータブルではありません。</p>\n</aside>\n<aside class=\"admonition-oracle admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle</p>\n<p>Oracle が照合順序をサポートするのは、<code class=\"docutils literal notranslate\">MAX_STRING_SIZE</code> データベース初期化パラメータが <code class=\"docutils literal notranslate\">EXTENDED</code> に設定されている場合だけです。</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"datefield\">\n<h3><code class=\"docutils literal notranslate\">DateField</code><a class=\"heading-anchor\" href=\"#datefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DateField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DateField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">auto_now<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">auto_now_add<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.DateField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Python で <code class=\"docutils literal notranslate\">datetime.date</code> インスタンスによって表される日付です。多少の追加的な省略可能な引数を持ちます:</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DateField.auto_now\">\n<span class=\"sig-prename descclassname\">DateField.</span><span class=\"sig-name descname\">auto_now</span><a class=\"heading-anchor\" href=\"#django.db.models.DateField.auto_now\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オブジェクトが保存される度に自動的に現在の日付をセットします。&quot;最後の変更&quot; タイムスタンプに役立ちます。現在の日付が常に使われる点に注意してください; オーバーライドできる単なるデフォルト値ではありません。</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.save\" title=\"django.db.models.Model.save\"><code class=\"xref py py-meth docutils literal notranslate\">Model.save()</code></a> が呼ばれたとき、フィールドは自動的に更新されるだけです。<a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet.update\" title=\"django.db.models.query.QuerySet.update\"><code class=\"xref py py-meth docutils literal notranslate\">QuerySet.update()</code></a> のような別の方法で他のフィールドに更新を加えるとき、フィールドは更新されません。あのように更新の中でフィールドの独自の値を指定できるとしてもです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DateField.auto_now_add\">\n<span class=\"sig-prename descclassname\">DateField.</span><span class=\"sig-name descname\">auto_now_add</span><a class=\"heading-anchor\" href=\"#django.db.models.DateField.auto_now_add\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オブジェクトが最初に作成されるとき、自動的にフィールドに現在の日付をセットします。タイムスタンプの作成に役立ちます。現在の日付が <em>常に</em> 使われる点に注意してください; オーバーライドできる単なるデフォルト値ではありません。たとえオブジェクトを作成するときに値をセットしたとしても無視されます。このフィールドを修正できるようにしておきたい場合は、<code class=\"docutils literal notranslate\">auto_now_add=True</code> の代わりに以下をセットしてください:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> に対して: <code class=\"docutils literal notranslate\">default=date.today</code> - <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.date.today\" title=\"(in Python v3.14)\"><code class=\"xref py py-meth docutils literal notranslate\">datetime.date.today()</code></a> より</p></li>\n<li><p><a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> に対して: <code class=\"docutils literal notranslate\">default=timezone.now</code> - <a class=\"reference internal\" href=\"/ja/6.0/ref/utils/#django.utils.timezone.now\" title=\"django.utils.timezone.now\"><code class=\"xref py py-func docutils literal notranslate\">django.utils.timezone.now()</code></a> より</p></li>\n</ul>\n</dd></dl>\n\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.DateInput\" title=\"django.forms.DateInput\"><code class=\"xref py py-class docutils literal notranslate\">DateInput</code></a> です。admin は JavaScript カレンダーと &quot;Today&quot; のショートカットを追加します。追加の <code class=\"docutils literal notranslate\">invalid_date</code> エラーメッセージキーを含みます。</p>\n<p>オプション <code class=\"docutils literal notranslate\">auto_now_add</code>、<code class=\"docutils literal notranslate\">auto_now</code>、<code class=\"docutils literal notranslate\">default</code> は相互に排他的です。これらのオプションを組み合わせるとエラーが発生します。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>現在実装されているように、<code class=\"docutils literal notranslate\">auto_now</code> や <code class=\"docutils literal notranslate\">auto_now_add</code> を <code class=\"docutils literal notranslate\">True</code> にセットすると、フィールドは <code class=\"docutils literal notranslate\">editable=False</code> と <code class=\"docutils literal notranslate\">blank=True</code> にセットされます。</p>\n</aside>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">auto_now</code> と <code class=\"docutils literal notranslate\">auto_now_add</code> オプションは、常に作成時または更新時の <a class=\"reference internal\" href=\"/ja/6.0/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">デフォルトのタイムゾーン</span></a> の日付を使用します。もし別のものが必要であれば、<code class=\"docutils literal notranslate\">auto_now</code> や <code class=\"docutils literal notranslate\">auto_now_add</code> を使用する代わりに、独自の呼び出し可能オブジェクトをデフォルトとして使用するか、 <code class=\"docutils literal notranslate\">save()</code> をオーバーライドするか、あるいは <code class=\"docutils literal notranslate\">DateField</code> の代わりに <code class=\"docutils literal notranslate\">DateTimeField</code> を使用し、表示時に datetime から date への変換をどのように処理するかを検討するとよいでしょう。</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> には常に <code class=\"docutils literal notranslate\">datetime.date</code> インスタンスを使用してください。</p>\n<p><code class=\"docutils literal notranslate\">datetime.datetime</code> インスタンスを持っている場合は、まずそれを <code class=\"docutils literal notranslate\">datetime.date</code> に変換することをお勧めします。変換しない場合、<a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> は <code class=\"docutils literal notranslate\">datetime.datetime</code> を <a class=\"reference internal\" href=\"/ja/6.0/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">デフォルトのタイムゾーン</span></a> にローカライズし、<code class=\"docutils literal notranslate\">datetime.date</code> インスタンスに変換してその時間部分を削除します。これは、保存および比較の両方において当てはまります。</p>\n</aside>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>PostgreSQL と MySQL では、<code class=\"docutils literal notranslate\">DateField</code> に対して <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">timedelta</code></a> を用いた算術演算を行うと、 <code class=\"docutils literal notranslate\">date</code> ではなく datetime が返されます。これは、Python の <code class=\"docutils literal notranslate\">timedelta</code> が SQL の <code class=\"docutils literal notranslate\">INTERVAL ``に変換され、これらのデータベースでは ``date +/- interval</code> という SQL 演算の結果が <code class=\"docutils literal notranslate\">timestamp</code> になるためです。</p>\n<p><code class=\"docutils literal notranslate\">date</code> 型の結果を得るには、次のいずれかの方法を使用してください。基本的には、結果を明示的に <code class=\"docutils literal notranslate\">date</code> 型へキャストすることになります。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">datetime</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> DateField<span class=\"p\">,</span> F\n<span class=\"kn\">from</span> <span class=\"nn\">django.db.models.functions</span> <span class=\"kn\">import</span> Cast\n\nqs <span class=\"o\">=</span> MyModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n    previous_day<span class=\"o\">=</span>Cast<span class=\"p\">(</span>\n        F<span class=\"p\">(</span><span class=\"s2\">&quot;date_field&quot;</span><span class=\"p\">)</span> <span class=\"o\">-</span> datetime<span class=\"o\">.</span>timedelta<span class=\"p\">(</span>days<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">),</span>\n        output_field<span class=\"o\">=</span>DateField<span class=\"p\">(),</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>あるいは、 PostgreSQL だけですが、日数を整数演算として扱うこともできます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db.models</span> <span class=\"kn\">import</span> DateField<span class=\"p\">,</span> ExpressionWrapper<span class=\"p\">,</span> F\n\nqs <span class=\"o\">=</span> MyModel<span class=\"o\">.</span>objects<span class=\"o\">.</span>annotate<span class=\"p\">(</span>\n    previous_day<span class=\"o\">=</span>ExpressionWrapper<span class=\"p\">(</span>\n        F<span class=\"p\">(</span><span class=\"s2\">&quot;date_field&quot;</span><span class=\"p\">)</span> <span class=\"o\">-</span> <span class=\"mi\">1</span><span class=\"p\">,</span>  <span class=\"c1\"># Subtract 1 day as integer</span>\n        output_field<span class=\"o\">=</span>DateField<span class=\"p\">(),</span>\n    <span class=\"p\">)</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</aside>\n</section>\n<section id=\"datetimefield\">\n<h3><code class=\"docutils literal notranslate\">DateTimeField</code><a class=\"heading-anchor\" href=\"#datetimefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DateTimeField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DateTimeField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">auto_now<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">auto_now_add<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.DateTimeField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Python で <code class=\"docutils literal notranslate\">datetime.datetime</code> インスタンスによって表される日付と時刻です。<a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> と同じくいくつかの追加的な引数を持ちます:</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.DateTimeInput\" title=\"django.forms.DateTimeInput\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeInput</code></a> です。管理画面では、JavaScript のショートカットを使って <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> ウィジェットを 2 つに分けて使用します。</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> には常に <code class=\"docutils literal notranslate\">datetime.datetime</code> インスタンスを使用してください。</p>\n<p><code class=\"docutils literal notranslate\">datetime.date</code> インスタンスを持っている場合は、まずそれを <code class=\"docutils literal notranslate\">datetime.datetime</code> に変換することをお勧めします。変換しない場合、<a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> は時間部分に <a class=\"reference internal\" href=\"/ja/6.0/topics/i18n/timezones/#default-current-time-zone\"><span class=\"std std-ref\">デフォルトのタイムゾーン</span></a> の午前0時を使用します。これは、保存および比較の両方において当てはまります。<code class=\"docutils literal notranslate\">datetime.date</code> インスタンスと <a class=\"reference internal\" href=\"#django.db.models.DateTimeField\" title=\"django.db.models.DateTimeField\"><code class=\"xref py py-class docutils literal notranslate\">DateTimeField</code></a> の日付部分を比較するには、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-date\"><code class=\"xref std std-lookup docutils literal notranslate\">date</code></a> ルックアップを使用してください。</p>\n</aside>\n</section>\n<section id=\"decimalfield\">\n<h3><code class=\"docutils literal notranslate\">DecimalField</code><a class=\"heading-anchor\" href=\"#decimalfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DecimalField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DecimalField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_digits<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">decimal_places<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.DecimalField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>固定精度の10進数で、Python では <a class=\"reference external\" href=\"https://docs.python.org/3/library/decimal.html#decimal.Decimal\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">Decimal</code></a> インスタンスで表されます。これは <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.DecimalValidator\" title=\"django.core.validators.DecimalValidator\"><code class=\"xref py py-class docutils literal notranslate\">DecimalValidator</code></a> を使用して入力を検証します。</p>\n<p>以下の <strong>必須の</strong> 引数があります：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DecimalField.max_digits\">\n<span class=\"sig-prename descclassname\">DecimalField.</span><span class=\"sig-name descname\">max_digits</span><a class=\"heading-anchor\" href=\"#django.db.models.DecimalField.max_digits\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>数値内で使える桁数の最大値です。 <code class=\"docutils literal notranslate\">decimal_places</code> 以上でなければならない点に注意してください。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DecimalField.decimal_places\">\n<span class=\"sig-prename descclassname\">DecimalField.</span><span class=\"sig-name descname\">decimal_places</span><a class=\"heading-anchor\" href=\"#django.db.models.DecimalField.decimal_places\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>数値とともに保持される小数点以下の位の数です。</p>\n</dd></dl>\n\n<p>例えば、小数点以下2桁の分解能で <code class=\"docutils literal notranslate\">999.99</code> までの数値を保存するには、次のようにします：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>models<span class=\"o\">.</span>DecimalField<span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">,</span> max_digits<span class=\"o\">=</span><span class=\"mi\">5</span><span class=\"p\">,</span> decimal_places<span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>小数点以下第10位の精度で約10億までを保持するには:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>models<span class=\"o\">.</span>DecimalField<span class=\"p\">(</span><span class=\"o\">...</span><span class=\"p\">,</span> max_digits<span class=\"o\">=</span><span class=\"mi\">19</span><span class=\"p\">,</span> decimal_places<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>このフィールドのデフォルトのフォームウィジェットは、<a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\">localize</code></a> が <code class=\"docutils literal notranslate\">False</code> のとき <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</code></a> で、そうでなければ <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> となります。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.FloatField\" title=\"django.db.models.FloatField\"><code class=\"xref py py-class docutils literal notranslate\">FloatField</code></a> クラスと <a class=\"reference internal\" href=\"#django.db.models.DecimalField\" title=\"django.db.models.DecimalField\"><code class=\"xref py py-class docutils literal notranslate\">DecimalField</code></a> クラスの違いについては <a class=\"reference internal\" href=\"#floatfield-vs-decimalfield\"><span class=\"std std-ref\">FloatField vs. DecimalField</span></a> を参照してください。また、Decimal に関する <a class=\"reference internal\" href=\"/ja/6.0/ref/databases/#sqlite-decimal-handling\"><span class=\"std std-ref\">SQLite の制限</span></a> についても注意してください。</p>\n</aside>\n</section>\n<section id=\"durationfield\">\n<h3><code class=\"docutils literal notranslate\">DurationField</code><a class=\"heading-anchor\" href=\"#durationfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DurationField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">DurationField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.DurationField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>時刻の期間を保持するフィールドで、 Python の <a class=\"reference external\" href=\"https://docs.python.org/3/library/datetime.html#datetime.timedelta\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">timedelta</code></a> によってモデル化されます。PostgreSQL で使われるときに用いられるデータ型は <code class=\"docutils literal notranslate\">interval</code> で、Oracle でのデータ型は <code class=\"docutils literal notranslate\">INTERVAL DAY(9) TO SECOND(6)</code> です。 それ以外では、マイクロ秒の <code class=\"docutils literal notranslate\">bigint</code> が使われます。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">DurationField</code> での演算はほとんどの場合で機能します。ただし、PostgreSQL 以外のデータベースでは、<code class=\"docutils literal notranslate\">DurationField</code> の値と <code class=\"docutils literal notranslate\">DateTimeField</code> インスタンス上の演算を比較することは期待通りに機能しません。</p>\n</aside>\n</section>\n<section id=\"emailfield\">\n<h3><code class=\"docutils literal notranslate\">EmailField</code><a class=\"heading-anchor\" href=\"#emailfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.EmailField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">EmailField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">254</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.EmailField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.EmailValidator\" title=\"django.core.validators.EmailValidator\"><code class=\"xref py py-class docutils literal notranslate\">EmailValidator</code></a> を使って、値が有効なメールアドレスであるかどうかをチェックする <a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> です。</p>\n</section>\n<section id=\"filefield\">\n<h3><code class=\"docutils literal notranslate\">FileField</code><a class=\"heading-anchor\" href=\"#filefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FileField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FileField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">upload_to<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">storage<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">100</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.FileField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>ファイルアップロードのフィールドです。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">primary_key</code> 引数はサポートされておらず、使用するとエラーになります。</p>\n</aside>\n<p>以下のオプション引数があります：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FileField.upload_to\">\n<span class=\"sig-prename descclassname\">FileField.</span><span class=\"sig-name descname\">upload_to</span><a class=\"heading-anchor\" href=\"#django.db.models.FileField.upload_to\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この属性は、アップロードディレクトリとファイル名を設定する方法を提供し、2 つの方法でセットできます。どちらの場合も、値は <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.save\" title=\"django.core.files.storage.Storage.save\"><code class=\"xref py py-meth docutils literal notranslate\">Storage.save()</code></a> メソッドに渡されます。</p>\n<p>文字列値または <a class=\"reference external\" href=\"https://docs.python.org/3/library/pathlib.html#pathlib.Path\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">Path</code></a> を指定する場合、 <a class=\"reference external\" href=\"https://docs.python.org/3/library/time.html#time.strftime\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">strftime()</code></a> フォーマットを含むことができます。これはファイルアップロードの日時に置き換えられます（アップロードされたファイルで指定されたディレクトリが一杯にならないようにするためです）。例えば以下のようにします：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"c1\"># file will be uploaded to MEDIA_ROOT/uploads</span>\n    upload <span class=\"o\">=</span> models<span class=\"o\">.</span>FileField<span class=\"p\">(</span>upload_to<span class=\"o\">=</span><span class=\"s2\">&quot;uploads/&quot;</span><span class=\"p\">)</span>\n    <span class=\"c1\"># or...</span>\n    <span class=\"c1\"># file will be saved to MEDIA_ROOT/uploads/2015/01/30</span>\n    upload <span class=\"o\">=</span> models<span class=\"o\">.</span>FileField<span class=\"p\">(</span>upload_to<span class=\"o\">=</span><span class=\"s2\">&quot;uploads/%Y/%m/</span><span class=\"si\">%d</span><span class=\"s2\">/&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>デフォルトの <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.FileSystemStorage\" title=\"django.core.files.storage.FileSystemStorage\"><code class=\"xref py py-class docutils literal notranslate\">FileSystemStorage</code></a> を使用している場合、この文字列の値が <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_ROOT</code></a> パスに追加され、アップロードされたファイルが保存されるローカルファイルシステムの場所になります。別のストレージを使用している場合は、そのストレージのドキュメントで <code class=\"docutils literal notranslate\">upload_to</code> の扱い方を確認してください。</p>\n<p><code class=\"docutils literal notranslate\">upload_to</code> は関数のなどの呼び出し可能オブジェクトにすることもできます。これはファイル名を含むアップロードパスを取得するために呼び出されます。この呼び出し可能オブジェクトは2つの引数を受け取り、ストレージシステムに渡すUnixスタイルのパス（フォワードスラッシュ付き）を返さなければなりません。2つの引数は</p>\n<div class=\"table-scroll\" role=\"region\" tabindex=\"0\" aria-label=\"Table\"><table class=\"docutils align-default\">\n<thead>\n<tr class=\"row-odd\"><th class=\"head\"><p>引数</p></th>\n<th class=\"head\"><p>説明</p></th>\n</tr>\n</thead>\n<tbody>\n<tr class=\"row-even\"><td><p><code class=\"docutils literal notranslate\">instance</code></p></td>\n<td><p><code class=\"docutils literal notranslate\">FileField</code> が定義されているモデルのインスタンス。具体的には、そのファイルが格納されている特定のインスタンスです。</p>\n<p>ほとんどの場合、このオブジェクトはまだデータベースに保存されていないため、デフォルトの <code class=\"docutils literal notranslate\">AutoField</code> を使用している場合、 <em>主キーフィールドの値をまだ持っていない可能性があります</em> 。</p>\n</td>\n</tr>\n<tr class=\"row-odd\"><td><p><code class=\"docutils literal notranslate\">filename</code></p></td>\n<td><p>ファイルに元々与えられていたファイル名。これは、最終的な宛先パスを決定するときに考慮されることもあれば、考慮されないこともあります。</p></td>\n</tr>\n</tbody>\n</table>\n</div>\n<p>例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span> <span class=\"nf\">user_directory_path</span><span class=\"p\">(</span>instance<span class=\"p\">,</span> filename<span class=\"p\">):</span>\n    <span class=\"c1\"># file will be uploaded to MEDIA_ROOT/user_&lt;id&gt;/&lt;filename&gt;</span>\n    <span class=\"k\">return</span> <span class=\"s2\">&quot;user_</span><span class=\"si\">{0}</span><span class=\"s2\">/</span><span class=\"si\">{1}</span><span class=\"s2\">&quot;</span><span class=\"o\">.</span>format<span class=\"p\">(</span>instance<span class=\"o\">.</span>user<span class=\"o\">.</span>id<span class=\"p\">,</span> filename<span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    upload <span class=\"o\">=</span> models<span class=\"o\">.</span>FileField<span class=\"p\">(</span>upload_to<span class=\"o\">=</span>user_directory_path<span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FileField.storage\">\n<span class=\"sig-prename descclassname\">FileField.</span><span class=\"sig-name descname\">storage</span><a class=\"heading-anchor\" href=\"#django.db.models.FileField.storage\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ストレージオブジェクト、またはストレージオブジェクトを返す呼び出し可能オブジェクトです。これはファイルの保存と取得を行います。このオブジェクトの渡し方の詳細については <a class=\"reference internal\" href=\"/ja/6.0/topics/files/\"><span class=\"doc\">ファイルの管理</span></a> を参照してください。</p>\n</dd></dl>\n\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\">ClearableFileInput</code></a> です。</p>\n<p>モデル内で a <a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> や <a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> (後述) 使うにはいくつかのステップを取ります:</p>\n<ol class=\"arabic simple\">\n<li><p>設定ファイルでは、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_ROOT</code></a> を Django にアップロードされたファイルを保存するディレクトリへのフルパスを指定する必要があります（パフォーマンス上、これらのファイルはデータベースには保存されません）。 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_URL\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_URL</code></a> をそのディレクトリの公開 URL にします。このディレクトリは Web サーバのユーザアカウントで書き込み可能である必要があります。</p></li>\n<li><p>モデルに <a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> または <a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> を追加し、 <a class=\"reference internal\" href=\"#django.db.models.FileField.upload_to\" title=\"django.db.models.FileField.upload_to\"><code class=\"xref py py-attr docutils literal notranslate\">upload_to</code></a> オプションを定義して、ファイルをアップロードする <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_ROOT</code></a> のサブディレクトリを指定します。</p></li>\n<li><p>データベースに保存されるのは、ファイルへのパス (<a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_ROOT</code></a> からの相対パス) だけです。Django 組み込みの <a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile.url\" title=\"django.db.models.fields.files.FieldFile.url\"><code class=\"xref py py-attr docutils literal notranslate\">url</code></a> 属性を使うと便利です。例えば、 <a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> が <code class=\"docutils literal notranslate\">mug_shot</code> という名前の場合、 <code class=\"docutils literal notranslate\">{{ object.mug_shot.url }}</code> でテンプレート内の画像の絶対パスを取得できます。</p></li>\n</ol>\n<p>例えば、 <a class=\"reference internal\" href=\"/ja/6.0/ref/settings/#std-setting-MEDIA_ROOT\"><code class=\"xref std std-setting docutils literal notranslate\">MEDIA_ROOT</code></a> が <code class=\"docutils literal notranslate\">'/home/media'</code> に設定され、 <a class=\"reference internal\" href=\"#django.db.models.FileField.upload_to\" title=\"django.db.models.FileField.upload_to\"><code class=\"xref py py-attr docutils literal notranslate\">upload_to</code></a> が <code class=\"docutils literal notranslate\">'photos/%Y/%m/%d'</code> に設定されているとします。 <a class=\"reference internal\" href=\"#django.db.models.FileField.upload_to\" title=\"django.db.models.FileField.upload_to\"><code class=\"xref py py-attr docutils literal notranslate\">upload_to</code></a> の <code class=\"docutils literal notranslate\">'%Y/%m/%d'</code> の部分は <a class=\"reference external\" href=\"https://docs.python.org/3/library/time.html#time.strftime\" title=\"(in Python v3.14)\"><code class=\"xref py py-func docutils literal notranslate\">strftime()</code></a> フォーマットです。<code class=\"docutils literal notranslate\">'%Y'</code> は4桁の年、<code class=\"docutils literal notranslate\">'%m'</code> は2桁の月、<code class=\"docutils literal notranslate\">'%d'</code> は2桁の日です。2007年1月15日にファイルをアップロードすると、 <code class=\"docutils literal notranslate\">/home/media/photos/2007/01/15</code> というディレクトリに保存されます。</p>\n<p>アップロードされたファイルのディスク上のファイル名やファイルサイズを取得したい場合は、それぞれ <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File.name\" title=\"django.core.files.File.name\"><code class=\"xref py py-attr docutils literal notranslate\">name</code></a> 属性と <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File.size\" title=\"django.core.files.File.size\"><code class=\"xref py py-attr docutils literal notranslate\">size</code></a> 属性を使うことができます。利用可能な属性やメソッドの詳細については <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> クラスリファレンス と <a class=\"reference internal\" href=\"/ja/6.0/topics/files/\"><span class=\"doc\">ファイルの管理</span></a> トピックガイド を参照してください。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>このファイルは、モデルをデータベースに保存する際に一緒に保存されるため、ディスク上で実際に使用されるファイル名は、モデルが保存されるまで当てになりません。</p>\n</aside>\n<p>アップロードされたファイルの相対URLは <a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile.url\" title=\"django.db.models.fields.files.FieldFile.url\"><code class=\"xref py py-attr docutils literal notranslate\">url</code></a> 属性で取得できます。内部的には、 <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\">Storage</code></a> クラスの <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.url\" title=\"django.core.files.storage.Storage.url\"><code class=\"xref py py-meth docutils literal notranslate\">url()</code></a> メソッドを呼び出します。</p>\n<p id=\"file-upload-security\">アップロードされたファイルを扱うときは常に、セキュリティホールを避けるために、アップロードする場所とファイルの種類に細心の注意を払う必要があることに注意してください。 <em>アップロードされたすべてのファイルを検証し</em> 、そのファイルがあなたが考えているものであることを確認してください。例えば、誰かがあなたのウェブサーバーのドキュメントルートにあるディレクトリに、検証なしでファイルをアップロードするのをやみくもに許可すると、誰かがCGIやPHPスクリプトをアップロードし、あなたのサイトのそのURLにアクセスしてスクリプトを実行できます。それを許してはいけません。</p>\n<p>また、アップロードされたHTMLファイルであっても、ブラウザが実行できるため（サーバは実行できませんが）、XSS攻撃やCSRF攻撃と同様のセキュリティ上の脅威をもたらす可能性があることに注意してください。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> インスタンスは <code class=\"docutils literal notranslate\">varchar</code> カラムとしてデータベースに作成され、デフォルトの最大長は100文字です。他のフィールドと同様に、 <a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> 引数を使用して最大長を変更できます。</p>\n<section id=\"filefield-and-fieldfile\">\n<h4><code class=\"docutils literal notranslate\">FileField</code> と <code class=\"docutils literal notranslate\">FieldFile</code><a class=\"heading-anchor\" href=\"#filefield-and-fieldfile\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FieldFile</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>モデル上の <a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> にアクセスするとき、元となるファイルにアアクセスするためのプロキシとして、<a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile\" title=\"django.db.models.fields.files.FieldFile\"><code class=\"xref py py-class docutils literal notranslate\">FieldFile</code></a> のインスタンスが与えられます。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile\" title=\"django.db.models.fields.files.FieldFile\"><code class=\"xref py py-class docutils literal notranslate\">FieldFile</code></a>  の API は <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> の API を反映していますが、主な違いが 1 つあります: <em>クラスによってラップされたオブジェクトは必ずしも Python のビルトインのファイルオブジェクトのラッパーであるとは限りません。</em> 代わりに、<a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.open\" title=\"django.core.files.storage.Storage.open\"><code class=\"xref py py-attr docutils literal notranslate\">Storage.open()</code></a> メソッドの結果を包むラッパーで、これは  <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> オブジェクトもしくは <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> API の独自ストレージの実装となります。</p>\n<p><code class=\"docutils literal notranslate\">read()</code> や <code class=\"docutils literal notranslate\">write()</code> など、<a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> から継承されたAPIに加えて、<a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile\" title=\"django.db.models.fields.files.FieldFile\"><code class=\"xref py py-class docutils literal notranslate\">FieldFile</code></a> には基になるファイルとやり取りするために使用できるいくつかのメソッドが含まれています：</p>\n<aside class=\"admonition admonition-warning\" role=\"note\">\n<p class=\"admonition-title\">警告</p>\n<p>このクラスの 2 つのメソッド、<a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile.save\" title=\"django.db.models.fields.files.FieldFile.save\"><code class=\"xref py py-meth docutils literal notranslate\">save()</code></a> と <a class=\"reference internal\" href=\"#django.db.models.fields.files.FieldFile.delete\" title=\"django.db.models.fields.files.FieldFile.delete\"><code class=\"xref py py-meth docutils literal notranslate\">delete()</code></a> は、デフォルトで、関連する FieldFile のモデルオブジェクトをデータベースに保存します。</p>\n</aside>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.name\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">name</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>関連する <a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> の <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\">Storage</code></a> のルートからの相対パスを含むファイル名です。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.path\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">path</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>ファイルのローカルファイルシステムパスにアクセスするための読み取り専用プロパティ。基になる <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\">Storage</code></a> クラスの <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.path\" title=\"django.core.files.storage.Storage.path\"><code class=\"xref py py-meth docutils literal notranslate\">path()</code></a> メソッドを呼び出します。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.size\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">size</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.size\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>元となる <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.size\" title=\"django.core.files.storage.Storage.size\"><code class=\"xref py py-attr docutils literal notranslate\">Storage.size()</code></a> メソッドの結果です。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.url\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">url</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.url\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>元となる <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage\" title=\"django.core.files.storage.Storage\"><code class=\"xref py py-class docutils literal notranslate\">Storage</code></a> クラス の <a class=\"reference internal\" href=\"/ja/6.0/ref/files/storage/#django.core.files.storage.Storage.url\" title=\"django.core.files.storage.Storage.url\"><code class=\"xref py py-meth docutils literal notranslate\">url()</code></a> メソッドを呼ぶことによって、ファイルの相対 URL にアクセスするための読み取り専用プロパティです。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.open\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">open</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">mode<span class=\"o\">=</span><span class=\"default_value\">'rb'</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.open\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このインスタンスに関連付けられたファイルを、指定された <code class=\"docutils literal notranslate\">モード</code> で開くか、開き直します。標準の Python の <code class=\"docutils literal notranslate\">open()</code> メソッドとは違い、ファイルのデスクリプタを返しません。</p>\n<p>元となるファイルはアクセスするときに暗黙的に開かれるので、元となるファイルにポインタをリセットするためか <code class=\"docutils literal notranslate\">モード</code> を変更するため以外には、このメソッドを呼ぶ必要はないでしょう。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.close\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">close</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.close\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>標準の Python の <code class=\"docutils literal notranslate\">file.close()</code> メソッドのように動作し、このインスタンスに関連付けられたファイルを閉じます。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.save\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">save</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">name</em>, <em class=\"sig-param\">content</em>, <em class=\"sig-param\">save<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このメソッドは、ファイル名とファイルの内容を取り、それらをフィールドのストレージクラスに渡し、格納されたファイルをモデルフィールドに関連付けます。 手動でファイルデータをモデル上の <a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> インスタンスに関連付けるには、 <code class=\"docutils literal notranslate\">save()</code> メソッドを使用してそのファイルデータを保持します。</p>\n<p>Takes two required arguments: <code class=\"docutils literal notranslate\">name</code> which is the name of the file, and\n<code class=\"docutils literal notranslate\">content</code> which is an object containing the file's contents. The\noptional <code class=\"docutils literal notranslate\">save</code> argument controls whether or not the model instance is\nsaved after the file associated with this field has been altered. Defaults to\n<code class=\"docutils literal notranslate\">True</code>.</p>\n<p><code class=\"docutils literal notranslate\">content</code> 引数は、Python のビルトインのファイルオブジェクトではなく、<a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">django.core.files.File</code></a> のインスタンスでなければならないことに注意してください。 以下のように、既存の Python ファイルオブジェクトから <a class=\"reference internal\" href=\"/ja/6.0/ref/files/file/#django.core.files.File\" title=\"django.core.files.File\"><code class=\"xref py py-class docutils literal notranslate\">File</code></a> を構築できます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.core.files</span> <span class=\"kn\">import</span> File\n\n<span class=\"c1\"># Open an existing file using Python&#39;s built-in open()</span>\nf <span class=\"o\">=</span> <span class=\"nb\">open</span><span class=\"p\">(</span><span class=\"s2\">&quot;/path/to/hello.world&quot;</span><span class=\"p\">)</span>\nmyfile <span class=\"o\">=</span> File<span class=\"p\">(</span>f<span class=\"p\">)</span>\n</code></pre></div>\n<p>もしくは、以下のように Python の文字列から構築することもできます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.core.files.base</span> <span class=\"kn\">import</span> ContentFile\n\nmyfile <span class=\"o\">=</span> ContentFile<span class=\"p\">(</span><span class=\"s2\">&quot;hello world&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>より詳しくは <a class=\"reference internal\" href=\"/ja/6.0/topics/files/\"><span class=\"doc\">ファイルの管理</span></a> を参照してください。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.fields.files.FieldFile.delete\">\n<span class=\"sig-prename descclassname\">FieldFile.</span><span class=\"sig-name descname\">delete</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">save<span class=\"o\">=</span><span class=\"default_value\">True</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.fields.files.FieldFile.delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>このインスタンスに関連付けられているファイルを削除し、フィールドのすべての属性をクリアします。 注: このメソッドは、<code class=\"docutils literal notranslate\">delete()</code> が呼び出されたときにファイルが開いた場合、ファイルを閉じます。</p>\n<p>省略可能な <code class=\"docutils literal notranslate\">save</code> 引数は、このフィールドに関連付けられたファイルが削除された後にモデルインスタンスを保存するかどうかをコントロールします。 デフォルトは <code class=\"docutils literal notranslate\">True</code> です。</p>\n<p>モデルを削除するとき、関連ファイルは削除されない点に注意してください。 孤立したファイルをクリーンアップする必要がある場合、自分で処理する必要があります (たとえば、手動で実行したり、cron などを通して定期的に実行される独自の管理コマンドです)。</p>\n</section>\n</section>\n<section id=\"filepathfield\">\n<h3><code class=\"docutils literal notranslate\">FilePathField</code><a class=\"heading-anchor\" href=\"#filepathfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FilePathField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">path<span class=\"o\">=</span><span class=\"default_value\">''</span></em>, <em class=\"sig-param\">match<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">recursive<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">allow_files<span class=\"o\">=</span><span class=\"default_value\">True</span></em>, <em class=\"sig-param\">allow_folders<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">100</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> は選択肢をファイルシステム上の特定のディレクトリにあるファイル名に限定します。いくつかの特別な引数を持ちますが、最初の引数は <strong>必須</strong> です：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField.path\">\n<span class=\"sig-prename descclassname\">FilePathField.</span><span class=\"sig-name descname\">path</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField.path\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>必須です。<a class=\"reference internal\" href=\"#django.db.models.FilePathField\" title=\"django.db.models.FilePathField\"><code class=\"xref py py-class docutils literal notranslate\">FilePathField</code></a> が選択肢から取得するディレクトリへの、ファイルシステムの絶対パスです。例: <code class=\"docutils literal notranslate\">&quot;/home/images&quot;</code>。</p>\n<p><code class=\"docutils literal notranslate\">path</code> には呼び出し可能オブジェクトを指定することもでき、これは例えば実行時に動的にパスを設定する関数などです。例：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">os</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">def</span> <span class=\"nf\">images_path</span><span class=\"p\">():</span>\n    <span class=\"k\">return</span> os<span class=\"o\">.</span>path<span class=\"o\">.</span>join<span class=\"p\">(</span>settings<span class=\"o\">.</span>LOCAL_FILE_DIR<span class=\"p\">,</span> <span class=\"s2\">&quot;images&quot;</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    file <span class=\"o\">=</span> models<span class=\"o\">.</span>FilePathField<span class=\"p\">(</span>path<span class=\"o\">=</span>images_path<span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField.match\">\n<span class=\"sig-prename descclassname\">FilePathField.</span><span class=\"sig-name descname\">match</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField.match\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>省略可能です。正規表現で、文字列として、<a class=\"reference internal\" href=\"#django.db.models.FilePathField\" title=\"django.db.models.FilePathField\"><code class=\"xref py py-class docutils literal notranslate\">FilePathField</code></a> がファイル名をフィルタリングするために使用します。 正規表現は、フルパスではなくベースファイル名に適用される点に注意してください。 例: <code class=\"docutils literal notranslate\">&quot;foo.*\\.txt$&quot;</code>。これは <code class=\"docutils literal notranslate\">foo23.txt</code> とは合致しますが、<code class=\"docutils literal notranslate\">bar.txt</code> や <code class=\"docutils literal notranslate\">foo23.png</code> とは合致しません。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField.recursive\">\n<span class=\"sig-prename descclassname\">FilePathField.</span><span class=\"sig-name descname\">recursive</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField.recursive\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>省略可能です。<code class=\"docutils literal notranslate\">True</code> か <code class=\"docutils literal notranslate\">False</code> のどちらかを取り、デフォルトは <code class=\"docutils literal notranslate\">False</code> です。<a class=\"reference internal\" href=\"#django.db.models.FilePathField.path\" title=\"django.db.models.FilePathField.path\"><code class=\"xref py py-attr docutils literal notranslate\">path</code></a> の全てのサブディレクトリを含むかどうかを指定します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField.allow_files\">\n<span class=\"sig-prename descclassname\">FilePathField.</span><span class=\"sig-name descname\">allow_files</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField.allow_files\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Optional. Either <code class=\"docutils literal notranslate\">True</code> or <code class=\"docutils literal notranslate\">False</code>. Default is <code class=\"docutils literal notranslate\">True</code>. Specifies\nwhether files in the specified location should be included. Either this or\n<a class=\"reference internal\" href=\"#django.db.models.FilePathField.allow_folders\" title=\"django.db.models.FilePathField.allow_folders\"><code class=\"xref py py-attr docutils literal notranslate\">allow_folders</code></a> must be <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FilePathField.allow_folders\">\n<span class=\"sig-prename descclassname\">FilePathField.</span><span class=\"sig-name descname\">allow_folders</span><a class=\"heading-anchor\" href=\"#django.db.models.FilePathField.allow_folders\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Optional. Either <code class=\"docutils literal notranslate\">True</code> or <code class=\"docutils literal notranslate\">False</code>. Default is <code class=\"docutils literal notranslate\">False</code>. Specifies\nwhether folders in the specified location should be included. Either this\nor <a class=\"reference internal\" href=\"#django.db.models.FilePathField.allow_files\" title=\"django.db.models.FilePathField.allow_files\"><code class=\"xref py py-attr docutils literal notranslate\">allow_files</code></a> must be <code class=\"docutils literal notranslate\">True</code>.</p>\n</dd></dl>\n\n<p>1つの可能性は、フルパスではなく、ベースファイル名に <a class=\"reference internal\" href=\"#django.db.models.FilePathField.match\" title=\"django.db.models.FilePathField.match\"><code class=\"xref py py-attr docutils literal notranslate\">match</code></a> が適用されることです。 したがって、この例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>FilePathField<span class=\"p\">(</span>path<span class=\"o\">=</span><span class=\"s2\">&quot;/home/images&quot;</span><span class=\"p\">,</span> match<span class=\"o\">=</span><span class=\"s2\">&quot;foo.*&quot;</span><span class=\"p\">,</span> recursive<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>...は、<code class=\"docutils literal notranslate\">/home/images/foo/bar.png</code> ではなく <code class=\"docutils literal notranslate\">/home/images/foo.png</code> とマッチします。これは、<a class=\"reference internal\" href=\"#django.db.models.FilePathField.match\" title=\"django.db.models.FilePathField.match\"><code class=\"xref py py-attr docutils literal notranslate\">match</code></a> がベースのファイル名に適用されるからです (<code class=\"docutils literal notranslate\">foo.png</code> と <code class=\"docutils literal notranslate\">bar.png</code>)。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.FilePathField\" title=\"django.db.models.FilePathField\"><code class=\"xref py py-class docutils literal notranslate\">FilePathField</code></a> のインスタンスは、デフォルトが最大 100 文字の <code class=\"docutils literal notranslate\">varchar</code> カラムとして、データベース上に生成されます。他のフィールドと同様に、<a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> 引数を使って最大文字数を変更できます。</p>\n</section>\n<section id=\"floatfield\">\n<h3><code class=\"docutils literal notranslate\">FloatField</code><a class=\"heading-anchor\" href=\"#floatfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.FloatField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">FloatField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.FloatField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><code class=\"docutils literal notranslate\">float</code> インスタンスによって表される Python の浮動小数点数です。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは、<a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\">localize</code></a> が <code class=\"docutils literal notranslate\">False</code> のとき <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</code></a> で、そうでなければ <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> となります。</p>\n<aside class=\"admonition-floatfield-vs-decimalfield admonition\" id=\"floatfield-vs-decimalfield\" role=\"note\">\n<p class=\"admonition-title\"><code class=\"docutils literal notranslate\">FloatField</code> と <code class=\"docutils literal notranslate\">DecimalField</code> の比較</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.FloatField\" title=\"django.db.models.FloatField\"><code class=\"xref py py-class docutils literal notranslate\">FloatField</code></a> クラスは、<a class=\"reference internal\" href=\"#django.db.models.DecimalField\" title=\"django.db.models.DecimalField\"><code class=\"xref py py-class docutils literal notranslate\">DecimalField</code></a> クラスと混同されることがあります。両方とも実数を表しますが、異なる方法で表現しています。<code class=\"docutils literal notranslate\">FloatField</code> は内部的には Python の <code class=\"docutils literal notranslate\">float</code> 型を使い、<code class=\"docutils literal notranslate\">DecimalField</code> は Python の <code class=\"docutils literal notranslate\">Decimal</code> 型を使います。この 2 つの違いについては、 Python のドキュメント <a class=\"reference external\" href=\"https://docs.python.org/3/library/decimal.html#module-decimal\" title=\"(in Python v3.14)\"><code class=\"xref py py-mod docutils literal notranslate\">decimal</code></a> module を参照してください。</p>\n</aside>\n</section>\n<section id=\"generatedfield\">\n<h3><code class=\"docutils literal notranslate\">GeneratedField</code><a class=\"heading-anchor\" href=\"#generatedfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GeneratedField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GeneratedField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"keyword-only-separator o\"><abbr title=\"Keyword-only parameters separator (PEP 3102)\">*</abbr></span></em>, <em class=\"sig-param\">expression</em>, <em class=\"sig-param\">output_field</em>, <em class=\"sig-param\">db_persist</em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.GeneratedField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>常にモデル内の他のフィールドに基づいて計算されるフィールド。このフィールドはデータベース自身によって管理・更新されます。 <code class=\"docutils literal notranslate\">GENERATED ALWAYS</code> SQL 構文を使います。</p>\n<p>生成カラムには、格納と仮想の2種類があります。格納生成カラムは書き込まれる (挿入もしくは更新される) ときに計算され、通常のカラムと同じようにストレージを占有します。仮想生成カラムはストレージを占有せず、読み込まれるときに計算されます。したがって、仮想生成カラムはビューに似ており、格納生成カラムはマテリアライズド・ビューに似ています。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GeneratedField.expression\">\n<span class=\"sig-prename descclassname\">GeneratedField.</span><span class=\"sig-name descname\">expression</span><a class=\"heading-anchor\" href=\"#django.db.models.GeneratedField.expression\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデルが変更されるたびにフィールドの値を自動的に設定するためにデータベースによって使用される <a class=\"reference internal\" href=\"/ja/6.0/ref/models/expressions/#django.db.models.Expression\" title=\"django.db.models.Expression\"><code class=\"xref py py-class docutils literal notranslate\">Expression</code></a> 。</p>\n<p>式は決定論的でなければならず、モデル内の（同じデータベース・テーブル内の）フィールドだけを参照しなければなりません。生成フィールドは他の生成フィールドを参照することはできません。データベースのバックエンドはさらなる制限を課すことができます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GeneratedField.output_field\">\n<span class=\"sig-prename descclassname\">GeneratedField.</span><span class=\"sig-name descname\">output_field</span><a class=\"heading-anchor\" href=\"#django.db.models.GeneratedField.output_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドのデータ型を定義するモデルフィールドインスタンス。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GeneratedField.db_persist\">\n<span class=\"sig-prename descclassname\">GeneratedField.</span><span class=\"sig-name descname\">db_persist</span><a class=\"heading-anchor\" href=\"#django.db.models.GeneratedField.db_persist\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>データベースカラムが実際のカラムのようにストレージを占有するかどうかを決定します。 <code class=\"docutils literal notranslate\">False</code> の場合、カラムは仮想カラムとして動作し、データベースのストレージ領域を占有しません。</p>\n<p>PostgreSQLは永続化 (persist) 列のみをサポートしています。Oracle は仮想列のみをサポートしています。</p>\n</dd></dl>\n\n<aside class=\"admonition-database-limitations admonition\" role=\"note\">\n<p class=\"admonition-title\">データベースの制約</p>\n<p>生成フィールドに関しては多くのデータベース固有の制限があり、Djangoはそれらを検証しないため、データベースがエラーを発生させる可能性があります。例えば、PostgreSQLでは、生成カラムで参照される関数や演算子は <code class=\"docutils literal notranslate\">IMMUTABLE</code> としてマークされている必要があります。</p>\n<p>あなたのデータベースで <code class=\"docutils literal notranslate\">expression</code> がサポートされているかどうかを常に確認する必要があります。 <a class=\"reference external\" href=\"https://mariadb.com/kb/en/generated-columns/#expression-support\">MariaDB</a>, <a class=\"reference external\" href=\"https://dev.mysql.com/doc/refman/en/create-table-generated-columns.html\">MySQL</a>, <a class=\"reference external\" href=\"https://docs.oracle.com/en/database/oracle/oracle-database/21/sqlrf/CREATE-TABLE.html#GUID-F9CE0CC3-13AE-4744-A43C-EAC7A71AAAB6__BABIIGBD\">Oracle</a>, <a class=\"reference external\" href=\"https://www.postgresql.org/docs/current/ddl-generated-columns.html\">PostgreSQL</a>, <a class=\"reference external\" href=\"https://www.sqlite.org/gencol.html#limitations\">SQLite</a> のドキュメントを確認してください。</p>\n</aside>\n<aside class=\"version-note version-changed\" data-version=\"6.0\" role=\"note\">\n<p class=\"version-note-title\">Changed in Django 6.0</p><p><code class=\"docutils literal notranslate\">GeneratedField</code>s are now automatically refreshed from the database on\nbackends that support it (SQLite, PostgreSQL, and Oracle) and marked as\ndeferred otherwise.</p>\n</aside>\n</section>\n<section id=\"genericipaddressfield\">\n<h3><code class=\"docutils literal notranslate\">GenericIPAddressField</code><a class=\"heading-anchor\" href=\"#genericipaddressfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GenericIPAddressField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">GenericIPAddressField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">protocol<span class=\"o\">=</span><span class=\"default_value\">'both'</span></em>, <em class=\"sig-param\">unpack_ipv4<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.GenericIPAddressField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>IPv4 か IPv6 のアドレスで、文字列フォーマットです (例: <code class=\"docutils literal notranslate\">192.0.2.30</code> ないし <code class=\"docutils literal notranslate\">2a02:42fe::4</code>)。このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> です。</p>\n<p>IPv6 アドレスは、 <span class=\"target\" id=\"index-2\"></span><a class=\"rfc reference external\" href=\"https://datatracker.ietf.org/doc/html/rfc4291.html#section-2.2\"><strong>RFC 4291 Section 2.2</strong></a> section 2.2 (同セクションの paragraph 3 で提案された IPv4 のフォーマットの使用を含む) にしたがって、 <code class=\"docutils literal notranslate\">::ffff:192.0.2.0</code> のように正規化します。たとえば、 <code class=\"docutils literal notranslate\">2001:0::0:01</code> は <code class=\"docutils literal notranslate\">2001::1</code> と正規化され、 <code class=\"docutils literal notranslate\">::ffff:0a0a:0a0a</code> は <code class=\"docutils literal notranslate\">::ffff:10.10.10.10</code> と正規化されます。そして、すべての文字は小文字に変換されます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GenericIPAddressField.protocol\">\n<span class=\"sig-prename descclassname\">GenericIPAddressField.</span><span class=\"sig-name descname\">protocol</span><a class=\"heading-anchor\" href=\"#django.db.models.GenericIPAddressField.protocol\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>有効なインプットを、指定したプロトコルに制限します。 使用可能な値は <code class=\"docutils literal notranslate\">'both'</code> (デフォルト)、<code class=\"docutils literal notranslate\">'IPv4'</code>、<code class=\"docutils literal notranslate\">'IPv6'</code> のどれかです。マッチングは大文字と小文字を区別しません。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.GenericIPAddressField.unpack_ipv4\">\n<span class=\"sig-prename descclassname\">GenericIPAddressField.</span><span class=\"sig-name descname\">unpack_ipv4</span><a class=\"heading-anchor\" href=\"#django.db.models.GenericIPAddressField.unpack_ipv4\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>IPv4 にマッピングされた <code class=\"docutils literal notranslate\">::ffff:192.0.2.1</code> のようなアドレスをアンパックします。このオプションを有効にすると、このアドレスは <code class=\"docutils literal notranslate\">192.0.2.1</code> とアンパックされます。デフォルトは無効です。<code class=\"docutils literal notranslate\">protocol</code> が <code class=\"docutils literal notranslate\">'both'</code> に設定されている場合にだけ使用できます。</p>\n</dd></dl>\n\n<p>ブランク値を要する場合、ブランク値は null として保持されるため、null 値を許容する必要があります。</p>\n</section>\n<section id=\"imagefield\">\n<h3><code class=\"docutils literal notranslate\">ImageField</code><a class=\"heading-anchor\" href=\"#imagefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ImageField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ImageField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">upload_to<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">height_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">width_field<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">100</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.ImageField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> から全ての属性とメソッドを継承して、さらにアップロードされたオブジェクトが有効な画像であることを検証します。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.FileField\" title=\"django.db.models.FileField\"><code class=\"xref py py-class docutils literal notranslate\">FileField</code></a> で使える専用の属性に加えて、<a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> には <code class=\"docutils literal notranslate\">height</code> と <code class=\"docutils literal notranslate\">width</code> 属性があります。</p>\n<p>これらの属性に対するクエリを容易にするために、<a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> は以下のオプション引数を持ちます：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ImageField.height_field\">\n<span class=\"sig-prename descclassname\">ImageField.</span><span class=\"sig-name descname\">height_field</span><a class=\"heading-anchor\" href=\"#django.db.models.ImageField.height_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>画像オブジェクトがセットされるたびに自動的に画像の高さが入力されるモデルフィールドの名前。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ImageField.width_field\">\n<span class=\"sig-prename descclassname\">ImageField.</span><span class=\"sig-name descname\">width_field</span><a class=\"heading-anchor\" href=\"#django.db.models.ImageField.width_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>画像オブジェクトがセットされるたびに自動的に画像の幅が入力されるモデルフィールドの名前。</p>\n</dd></dl>\n\n<p><a class=\"extlink-pypi reference external\" href=\"https://pypi.org/project/pillow/\">pillow</a> ライブラリを必要とします。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.ImageField\" title=\"django.db.models.ImageField\"><code class=\"xref py py-class docutils literal notranslate\">ImageField</code></a> のインスタンスは、デフォルトが最大 100 文字の <code class=\"docutils literal notranslate\">varchar</code> カラムとして、データベース上に生成されます。他のフィールドと同様に、<a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> 引数を使って最大文字数を変更できます。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.ClearableFileInput\" title=\"django.forms.ClearableFileInput\"><code class=\"xref py py-class docutils literal notranslate\">ClearableFileInput</code></a> です。</p>\n</section>\n<section id=\"integerfield\">\n<h3><code class=\"docutils literal notranslate\">IntegerField</code><a class=\"heading-anchor\" href=\"#integerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.IntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">IntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.IntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>整数値です。特定範囲の値のみ使用可能です (その範囲はデータベースに依存します)。 <code class=\"docutils literal notranslate\">-2147483648</code> から <code class=\"docutils literal notranslate\">2147483647</code> までの値は、Django がサポートするすべてのデータベースで安全に使用できます。</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.MinValueValidator\" title=\"django.core.validators.MinValueValidator\"><code class=\"xref py py-class docutils literal notranslate\">MinValueValidator</code></a> と <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.MaxValueValidator\" title=\"django.core.validators.MaxValueValidator\"><code class=\"xref py py-class docutils literal notranslate\">MaxValueValidator</code></a> を使って、デフォルトのデータベースがサポートする値に基づいて入力を検証します。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは、<a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.Field.localize\" title=\"django.forms.Field.localize\"><code class=\"xref py py-attr docutils literal notranslate\">localize</code></a> が <code class=\"docutils literal notranslate\">False</code> のとき <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.NumberInput\" title=\"django.forms.NumberInput\"><code class=\"xref py py-class docutils literal notranslate\">NumberInput</code></a> で、そうでなければ <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TextInput\" title=\"django.forms.TextInput\"><code class=\"xref py py-class docutils literal notranslate\">TextInput</code></a> となります。</p>\n</section>\n<section id=\"jsonfield\">\n<h3><code class=\"docutils literal notranslate\">JSONField</code><a class=\"heading-anchor\" href=\"#jsonfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.JSONField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">JSONField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">encoder<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">decoder<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.JSONField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>JSON エンコードされたデータを格納するためのフィールドです。Python では、データは Python ネイティブフォーマットで表現されます。辞書、リスト、文字列、数値、真偽値、そして <code class=\"docutils literal notranslate\">None</code> です。</p>\n<p><code class=\"docutils literal notranslate\">JSONField</code> はMariaDB、MySQL、Oracle、PostgreSQL、(<a class=\"reference internal\" href=\"/ja/6.0/ref/databases/#sqlite-json1\"><span class=\"std std-ref\">JSON1 エクステンションが有効な</span></a>) SQLite でサポートされています。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.JSONField.encoder\">\n<span class=\"sig-prename descclassname\">JSONField.</span><span class=\"sig-name descname\">encoder</span><a class=\"heading-anchor\" href=\"#django.db.models.JSONField.encoder\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>An optional <a class=\"reference external\" href=\"https://docs.python.org/3/library/json.html#json.JSONEncoder\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">json.JSONEncoder</code></a> subclass to serialize data types\nnot supported by the standard JSON serializer (e.g. <code class=\"docutils literal notranslate\">datetime.datetime</code>\nor <a class=\"reference external\" href=\"https://docs.python.org/3/library/uuid.html#uuid.UUID\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">UUID</code></a>). For example, you can use the\n<a class=\"reference internal\" href=\"/ja/6.0/topics/serialization/#django.core.serializers.json.DjangoJSONEncoder\" title=\"django.core.serializers.json.DjangoJSONEncoder\"><code class=\"xref py py-class docutils literal notranslate\">DjangoJSONEncoder</code></a> class.</p>\n<p>デフォルトは <code class=\"docutils literal notranslate\">json.JSONEncoder</code> です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.JSONField.decoder\">\n<span class=\"sig-prename descclassname\">JSONField.</span><span class=\"sig-name descname\">decoder</span><a class=\"heading-anchor\" href=\"#django.db.models.JSONField.decoder\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>An optional <a class=\"reference external\" href=\"https://docs.python.org/3/library/json.html#json.JSONDecoder\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">json.JSONDecoder</code></a> subclass to deserialize the value\nretrieved from the database. The value will be in the format chosen by the\ncustom encoder (most often a string). Your deserialization may need to\naccount for the fact that you can't be certain of the input type. For\nexample, you run the risk of returning a <code class=\"docutils literal notranslate\">datetime</code> that was actually a\nstring that just happened to be in the same format chosen for\n<code class=\"docutils literal notranslate\">datetime</code>s.</p>\n<p>デフォルトは <code class=\"docutils literal notranslate\">json.JSONDecoder</code> です。</p>\n</dd></dl>\n\n<p>データベース内の <code class=\"docutils literal notranslate\">JSONField</code> をクエリするには、 <a class=\"reference internal\" href=\"/ja/6.0/topics/db/queries/#querying-jsonfield\"><span class=\"std std-ref\">JSONField へのクエリ</span></a> を参照してください。</p>\n<aside class=\"admonition-default-value admonition\" role=\"note\">\n<p class=\"admonition-title\">デフォルト値について</p>\n<p>If you give the field a <a class=\"reference internal\" href=\"#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\">default</code></a>, ensure\nit's a callable such as the <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">dict</code></a> class or a function that\nreturns a fresh object each time. Incorrectly using a mutable object like\n<code class=\"docutils literal notranslate\">default={}</code> or <code class=\"docutils literal notranslate\">default=[]</code> creates a mutable default that is shared\nbetween all instances.</p>\n</aside>\n<aside class=\"admonition-indexing admonition\" role=\"note\">\n<p class=\"admonition-title\">インデックスの作成</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/indexes/#django.db.models.Index\" title=\"django.db.models.Index\"><code class=\"xref py py-class docutils literal notranslate\">Index</code></a> と <a class=\"reference internal\" href=\"#django.db.models.Field.db_index\" title=\"django.db.models.Field.db_index\"><code class=\"xref py py-attr docutils literal notranslate\">Field.db_index</code></a> はどちらも B-tree インデックスを作成しますが、<code class=\"docutils literal notranslate\">JSONField</code> をクエリする際には特に役に立ちません。PostgreSQL でだけ、より適した <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/postgres/indexes/#django.contrib.postgres.indexes.GinIndex\" title=\"django.contrib.postgres.indexes.GinIndex\"><code class=\"xref py py-class docutils literal notranslate\">GinIndex</code></a> を使うことができます。</p>\n</aside>\n<aside class=\"admonition-postgresql-users admonition\" role=\"note\">\n<p class=\"admonition-title\">PostgreSQL ユーザーの場合</p>\n<p>PostgreSQLには2つのJSONベースのデータ型があります。 <code class=\"docutils literal notranslate\">json</code> と <code class=\"docutils literal notranslate\">jsonb</code> です。これらの主な違いは、格納方法とクエリ方法です。PostgreSQLの <code class=\"docutils literal notranslate\">json</code> フィールドはJSONの元の文字列表現として格納され、キーに基づいてクエリを行うにはその場でデコードする必要があります。 <code class=\"docutils literal notranslate\">jsonb</code> フィールドはJSONの実際の構造に基づいて格納され、インデックスを作成できます。そのトレードオフとして、<code class=\"docutils literal notranslate\">jsonb</code> フィールドへの書き込みに若干の追加コストが発生します。 <code class=\"docutils literal notranslate\">JSONField</code> は <code class=\"docutils literal notranslate\">jsonb</code> を使用します。</p>\n</aside>\n<aside class=\"admonition-oracle-users admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle のユーザーの場合</p>\n<p>Oracle Database does not support storing JSON scalar values. Only JSON\nobjects and arrays (represented in Python using <a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#dict\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">dict</code></a> and\n<a class=\"reference external\" href=\"https://docs.python.org/3/library/stdtypes.html#list\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">list</code></a>) are supported.</p>\n</aside>\n</section>\n<section id=\"positivebigintegerfield\">\n<h3><code class=\"docutils literal notranslate\">PositiveBigIntegerField</code><a class=\"heading-anchor\" href=\"#positivebigintegerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.PositiveBigIntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PositiveBigIntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.PositiveBigIntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.PositiveIntegerField\" title=\"django.db.models.PositiveIntegerField\"><code class=\"xref py py-class docutils literal notranslate\">PositiveIntegerField</code></a> とほぼ同じですが、特定の数以下の値のみ使用可能です (その上限はデータベースに依存します)。 <code class=\"docutils literal notranslate\">0</code> から <code class=\"docutils literal notranslate\">9223372036854775807</code> までの値は、 Django がサポートする全てのデータベースで安全に使用できます。</p>\n</section>\n<section id=\"positiveintegerfield\">\n<h3><code class=\"docutils literal notranslate\">PositiveIntegerField</code><a class=\"heading-anchor\" href=\"#positiveintegerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.PositiveIntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PositiveIntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.PositiveIntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.IntegerField\" title=\"django.db.models.IntegerField\"><code class=\"xref py py-class docutils literal notranslate\">IntegerField</code></a> とほぼ同じですが、ゼロ( <code class=\"docutils literal notranslate\">0</code> )以上の整数で、特定の数以下の値のみ使用可能です (その上限はデータベースに依存します)。 <code class=\"docutils literal notranslate\">0</code> から <code class=\"docutils literal notranslate\">2147483647</code> までの値は、 Django がサポートするすべてのデータベースで安全に使用できます。値 <code class=\"docutils literal notranslate\">0</code> は後方互換性のために許容されています。</p>\n</section>\n<section id=\"positivesmallintegerfield\">\n<h3><code class=\"docutils literal notranslate\">PositiveSmallIntegerField</code><a class=\"heading-anchor\" href=\"#positivesmallintegerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.PositiveSmallIntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">PositiveSmallIntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.PositiveSmallIntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>class:PositiveIntegerField とほぼ同じですが、特定の数以下の値のみ使用可能です (その上限はデータベースに依存します)。 <code class=\"docutils literal notranslate\">0</code> から <code class=\"docutils literal notranslate\">32767</code> までの値は、 Django がサポートする全てのデータベースで安全に使用できます。</p>\n</section>\n<section id=\"slugfield\">\n<h3><code class=\"docutils literal notranslate\">SlugField</code><a class=\"heading-anchor\" href=\"#slugfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SlugField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SlugField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">50</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.SlugField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p><a class=\"reference internal\" href=\"/ja/6.0/glossary/#term-slug\"><span class=\"xref std std-term\">スラグ (slug)</span></a> は新聞用語です。スラグとは、アルファベット、数字、アンダースコア、またはハイフンのみを含む、何かの短いラベルです。一般的にURLで使われます。</p>\n<p>CharField のように、<a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> を指定することもできます (データベースの可搬性についてのノートとそのセクションの <a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> も参照してください)。<a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> が指定されていないとき、Django はデフォルトの文字数 50 を使います。</p>\n<p>暗黙的に <a class=\"reference internal\" href=\"#django.db.models.Field.db_index\" title=\"django.db.models.Field.db_index\"><code class=\"xref py py-attr docutils literal notranslate\">Field.db_index</code></a> を <code class=\"docutils literal notranslate\">True</code> にセットします。</p>\n<p>It is often useful to automatically prepopulate a SlugField based on the value\nof some other value. You can do this automatically in the admin using\n<a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.prepopulated_fields\" title=\"django.contrib.admin.ModelAdmin.prepopulated_fields\"><code class=\"xref py py-attr docutils literal notranslate\">prepopulated_fields</code></a>.</p>\n<p>バリデーションには <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.validate_slug\" title=\"django.core.validators.validate_slug\"><code class=\"xref py py-class docutils literal notranslate\">validate_slug</code></a> または <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.validate_unicode_slug\" title=\"django.core.validators.validate_unicode_slug\"><code class=\"xref py py-class docutils literal notranslate\">validate_unicode_slug</code></a> を使用します。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SlugField.allow_unicode\">\n<span class=\"sig-prename descclassname\">SlugField.</span><span class=\"sig-name descname\">allow_unicode</span><a class=\"heading-anchor\" href=\"#django.db.models.SlugField.allow_unicode\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">True</code> なら、フィールドはASCII文字に加えてUnicode文字も受け付けます。デフォルトは <code class=\"docutils literal notranslate\">False</code> です。</p>\n</dd></dl>\n\n</section>\n<section id=\"smallautofield\">\n<h3><code class=\"docutils literal notranslate\">SmallAutoField</code><a class=\"heading-anchor\" href=\"#smallautofield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SmallAutoField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SmallAutoField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.SmallAutoField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>class:AutoField とほぼ同じですが、特定の数以下の値のみ使用可能です (その上限はデータベースに依存します)。 <code class=\"docutils literal notranslate\">1</code> から <code class=\"docutils literal notranslate\">32767</code> までの値は、 Django がサポートする全てのデータベースで安全に使用できます。</p>\n</section>\n<section id=\"smallintegerfield\">\n<h3><code class=\"docutils literal notranslate\">SmallIntegerField</code><a class=\"heading-anchor\" href=\"#smallintegerfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SmallIntegerField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">SmallIntegerField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.SmallIntegerField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>class:IntegerField とほぼ同じですが、特定の数以下の値のみ使用可能です (その上限はデータベースに依存します)。 <code class=\"docutils literal notranslate\">-32768</code> から <code class=\"docutils literal notranslate\">32767</code> までの値は、 Django がサポートする全てのデータベースで安全に使用できます。</p>\n</section>\n<section id=\"textfield\">\n<h3><code class=\"docutils literal notranslate\">TextField</code><a class=\"heading-anchor\" href=\"#textfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.TextField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TextField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.TextField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>多量のテキストのフィールドです。このフィールドのデフォルトのフォームウィジェットは  <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.Textarea\" title=\"django.forms.Textarea\"><code class=\"xref py py-class docutils literal notranslate\">Textarea</code></a> です。</p>\n<p><code class=\"docutils literal notranslate\">max_length</code> 属性を指定した場合、自動生成されたフォームフィールドの <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.Textarea\" title=\"django.forms.Textarea\"><code class=\"xref py py-class docutils literal notranslate\">Textarea</code></a> ウィジェット内で反映されます。ただし、モデルやデータベースのレベルでは施行されません。そのためには <a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> を使用してください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.TextField.db_collation\">\n<span class=\"sig-prename descclassname\">TextField.</span><span class=\"sig-name descname\">db_collation</span><a class=\"heading-anchor\" href=\"#django.db.models.TextField.db_collation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>オプション。フィールドのデータベース照合順序名(collation name)です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>照合順序名は標準化されていません。そのため、これは複数のデータベースバックエンド間でポータブルではありません。</p>\n</aside>\n<aside class=\"admonition-oracle admonition\" role=\"note\">\n<p class=\"admonition-title\">Oracle</p>\n<p>Oracle は <code class=\"docutils literal notranslate\">TextField</code> の照合順序 (collation) をサポートしていません。</p>\n</aside>\n</dd></dl>\n\n</section>\n<section id=\"timefield\">\n<h3><code class=\"docutils literal notranslate\">TimeField</code><a class=\"heading-anchor\" href=\"#timefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.TimeField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">TimeField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">auto_now<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\">auto_now_add<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.TimeField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Python で <code class=\"docutils literal notranslate\">datetime.time</code> インスタンスによって表される時刻です。<a class=\"reference internal\" href=\"#django.db.models.DateField\" title=\"django.db.models.DateField\"><code class=\"xref py py-class docutils literal notranslate\">DateField</code></a> と同じ自動入力されるオプションを受け入れます。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.TimeInput\" title=\"django.forms.TimeInput\"><code class=\"xref py py-class docutils literal notranslate\">TimeInput</code></a> です。admin はいくつかの JavaScript ショートカットを追加します。</p>\n</section>\n<section id=\"urlfield\">\n<h3><code class=\"docutils literal notranslate\">URLField</code><a class=\"heading-anchor\" href=\"#urlfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.URLField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">URLField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">max_length<span class=\"o\">=</span><span class=\"default_value\">200</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.URLField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>URLの <a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> で、 <a class=\"reference internal\" href=\"/ja/6.0/ref/validators/#django.core.validators.URLValidator\" title=\"django.core.validators.URLValidator\"><code class=\"xref py py-class docutils literal notranslate\">URLValidator</code></a> によってバリデーションされます。</p>\n<p>このフィールドのデフォルトのフォームウィジェットは <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/widgets/#django.forms.URLInput\" title=\"django.forms.URLInput\"><code class=\"xref py py-class docutils literal notranslate\">URLInput</code></a> です。</p>\n<p>全ての <a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> サブクラスと同じく、<a class=\"reference internal\" href=\"#django.db.models.URLField\" title=\"django.db.models.URLField\"><code class=\"xref py py-class docutils literal notranslate\">URLField</code></a> は省略可能な <a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> 引数を取ります。<a class=\"reference internal\" href=\"#django.db.models.CharField.max_length\" title=\"django.db.models.CharField.max_length\"><code class=\"xref py py-attr docutils literal notranslate\">max_length</code></a> を指定しない場合、デフォルトの 200 が使われます。</p>\n</section>\n<section id=\"uuidfield\">\n<h3><code class=\"docutils literal notranslate\">UUIDField</code><a class=\"heading-anchor\" href=\"#uuidfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.UUIDField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">UUIDField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.UUIDField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>一意な識別子を格納するためのフィールドです。Python の <a class=\"reference external\" href=\"https://docs.python.org/3/library/uuid.html#uuid.UUID\" title=\"(in Python v3.14)\"><code class=\"xref py py-class docutils literal notranslate\">UUID</code></a> クラスを使用します。PostgreSQL と MariaDB 10.7+ で使用する場合、 <code class=\"docutils literal notranslate\">uuid</code> データ型で保存されます。</p>\n<p>UUID は <a class=\"reference internal\" href=\"#django.db.models.Field.primary_key\" title=\"django.db.models.Field.primary_key\"><code class=\"xref py py-attr docutils literal notranslate\">primary_key</code></a> に代わる <a class=\"reference internal\" href=\"#django.db.models.AutoField\" title=\"django.db.models.AutoField\"><code class=\"xref py py-class docutils literal notranslate\">AutoField</code></a> への良い選択肢です。 データベースはあなたのための UUID を生成しないため、 <a class=\"reference internal\" href=\"#django.db.models.Field.default\" title=\"django.db.models.Field.default\"><code class=\"xref py py-attr docutils literal notranslate\">default</code></a> を使うことが推奨されます:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span> <span class=\"nn\">uuid</span>\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyUUIDModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    <span class=\"nb\">id</span> <span class=\"o\">=</span> models<span class=\"o\">.</span>UUIDField<span class=\"p\">(</span>primary_key<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span> default<span class=\"o\">=</span>uuid<span class=\"o\">.</span>uuid4<span class=\"p\">,</span> editable<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n    <span class=\"c1\"># other fields</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">UUID</code> のインスタンスではなく、呼び出し可能オブジェクト（カッコは書かない）を <code class=\"docutils literal notranslate\">default</code> に渡すことに注意してください。</p>\n<aside class=\"admonition-lookups-on-postgresql-and-mariadb-10-7 admonition\" role=\"note\">\n<p class=\"admonition-title\">PostgreSQL と MariaDB 10.7+ におけるルックアップ</p>\n<p>PostgreSQL や MariaDB 10.7 以降では、ハイフンがない値に対して <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-iexact\"><code class=\"xref std std-lookup docutils literal notranslate\">iexact</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-contains\"><code class=\"xref std std-lookup docutils literal notranslate\">contains</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-icontains\"><code class=\"xref std std-lookup docutils literal notranslate\">icontains</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-startswith\"><code class=\"xref std std-lookup docutils literal notranslate\">startswith</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-istartswith\"><code class=\"xref std std-lookup docutils literal notranslate\">istartswith</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-endswith\"><code class=\"xref std std-lookup docutils literal notranslate\">endswith</code></a>, <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#std-fieldlookup-iendswith\"><code class=\"xref std std-lookup docutils literal notranslate\">iendswith</code></a> のルックアップを使用しても機能しません。これは、これらのデータベースがハイフン付きのuuidデータ型でそれらを格納するためです。</p>\n</aside>\n</section>\n</section>\n<section id=\"module-django.db.models.fields.related\">\n<span id=\"id1\"></span><span id=\"relationship-fields\"></span><h2>リレーションシップフィールド<a class=\"heading-anchor\" href=\"#module-django.db.models.fields.related\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Djangoは、リレーションを表すフィールドのセットも定義しています。</p>\n<section id=\"foreignkey\">\n<span id=\"ref-foreignkey\"></span><h3><code class=\"docutils literal notranslate\">ForeignKey</code><a class=\"heading-anchor\" href=\"#foreignkey\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ForeignKey</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">to</em>, <em class=\"sig-param\">on_delete</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>多対一のリレーションシップです。モデルが関連するクラスと、<a class=\"reference internal\" href=\"#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> オプションの2つの位置引数が必要です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Manufacturer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Car</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    manufacturer <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Manufacturer<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n</code></pre></div>\n<p>最初の位置引数には、具象モデルクラスまたはモデルクラスへの <a class=\"reference internal\" href=\"#lazy-relationships\"><span class=\"std std-ref\">遅延参照</span></a> のいずれかを指定できます。モデルが自分自身とリレーションシップを持つ <a class=\"reference internal\" href=\"#recursive-relationships\"><span class=\"std std-ref\">再帰的リレーションシップ</span></a> もサポートされています。</p>\n<p>2番目の位置引数の詳細については、<a class=\"reference internal\" href=\"#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">ForeignKey.on_delete</code></a> を参照してください。</p>\n<p>A database index is automatically created on the <code class=\"docutils literal notranslate\">ForeignKey</code>. You can\ndisable this by setting <a class=\"reference internal\" href=\"#django.db.models.Field.db_index\" title=\"django.db.models.Field.db_index\"><code class=\"xref py py-attr docutils literal notranslate\">db_index</code></a> to <code class=\"docutils literal notranslate\">False</code>. You may want to\navoid the overhead of an index if you are creating a foreign key for\nconsistency rather than joins, or if you will be creating an alternative index\nlike a partial or multiple column index.</p>\n<section id=\"database-representation\">\n<h4>データベース上の表現<a class=\"heading-anchor\" href=\"#database-representation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>内部的に、Django はフィールド名に <code class=\"docutils literal notranslate\">&quot;_id&quot;</code> を追加してデータベースのカラム名を作成します。上記の例では、<code class=\"docutils literal notranslate\">Car</code> モデルのデータベーステーブルには <code class=\"docutils literal notranslate\">manufacturer_id</code> カラムが作成されます。この名前は <a class=\"reference internal\" href=\"#django.db.models.Field.db_column\" title=\"django.db.models.Field.db_column\"><code class=\"xref py py-attr docutils literal notranslate\">db_column</code></a> を指定することで明示的に変更できますが、通常はデータベースのカラム名を直接操作する必要はありません（カスタムSQLを記述する場合を除く）。あなたのコードは常にモデルオブジェクトのフィールド名を操作します。</p>\n</section>\n<section id=\"arguments\">\n<span id=\"foreign-key-arguments\"></span><h4>引数<a class=\"heading-anchor\" href=\"#arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> はリレーションシップの動作の詳細を定義する他の引数を取ることができます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.on_delete\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">on_delete</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.on_delete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> で参照されているオブジェクトが削除されると、 Django は <a class=\"reference internal\" href=\"#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> 引数で指定された SQL 制約の動作をエミュレートします。例えば、Null 許容の <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> があり、参照オブジェクトが削除されたときに <code class=\"docutils literal notranslate\">ForeignKey</code> を NULL にしたい場合、次のようにします：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>user <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n    User<span class=\"p\">,</span>\n    models<span class=\"o\">.</span>SET_NULL<span class=\"p\">,</span>\n    blank<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n    null<span class=\"o\">=</span><span class=\"kc\">True</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">on_delete</code> はデータベースにSQL制約を作成しません。データベースレベルのカスケードオプションのサポートは、 <a class=\"extlink-ticket reference external\" href=\"https://code.djangoproject.com/ticket/21961\">将来的に実装される可能性があります</a> 。</p>\n</dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey.on_delete\" title=\"django.db.models.ForeignKey.on_delete\"><code class=\"xref py py-attr docutils literal notranslate\">on_delete</code></a> に指定できる値は <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#module-django.db.models\" title=\"django.db.models\"><code class=\"xref py py-mod docutils literal notranslate\">django.db.models</code></a> にあります：</p>\n<ul>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.CASCADE\">\n<span class=\"sig-name descname\">CASCADE</span><a class=\"heading-anchor\" href=\"#django.db.models.CASCADE\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスケード削除。 Django は SQL 制約の <code class=\"docutils literal notranslate\">ON DELETE CASCADE</code> の動作をエミュレートし、 <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> を含むオブジェクトも削除します。</p>\n<p><a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.delete\" title=\"django.db.models.Model.delete\"><code class=\"xref py py-meth docutils literal notranslate\">Model.delete()</code></a> はリレーション先モデルでは呼び出されませんが、 <a class=\"reference internal\" href=\"/ja/6.0/ref/signals/#django.db.models.signals.pre_delete\" title=\"django.db.models.signals.pre_delete\"><code class=\"xref py py-data docutils literal notranslate\">pre_delete</code></a> と <a class=\"reference internal\" href=\"/ja/6.0/ref/signals/#django.db.models.signals.post_delete\" title=\"django.db.models.signals.post_delete\"><code class=\"xref py py-data docutils literal notranslate\">post_delete</code></a> シグナルは削除された全てのオブジェクトに対して送られます。</p>\n</dd></dl>\n\n</li>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.PROTECT\">\n<span class=\"sig-name descname\">PROTECT</span><a class=\"heading-anchor\" href=\"#django.db.models.PROTECT\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">django.db.IntegrityError</code></a> のサブクラスである <a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.models.ProtectedError\" title=\"django.db.models.ProtectedError\"><code class=\"xref py py-exc docutils literal notranslate\">ProtectedError</code></a> を発生させて、参照オブジェクトの削除を防ぎます。</p>\n</dd></dl>\n\n</li>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.RESTRICT\">\n<span class=\"sig-name descname\">RESTRICT</span><a class=\"heading-anchor\" href=\"#django.db.models.RESTRICT\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.models.RestrictedError\" title=\"django.db.models.RestrictedError\"><code class=\"xref py py-exc docutils literal notranslate\">RestrictedError</code></a> (<a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">django.db.IntegrityError</code></a> のサブクラス) を発生させて、参照オブジェクトの削除を防ぎます。 <a class=\"reference internal\" href=\"#django.db.models.PROTECT\" title=\"django.db.models.PROTECT\"><code class=\"xref py py-attr docutils literal notranslate\">PROTECT</code></a> とは異なり、同じ操作で削除されるオブジェクトが <a class=\"reference internal\" href=\"#django.db.models.CASCADE\" title=\"django.db.models.CASCADE\"><code class=\"xref py py-attr docutils literal notranslate\">CASCADE</code></a> リレーションシップで参照されている場合、参照オブジェクトの削除は許可されます。</p>\n<p>以下のような一連のモデルを考えてみましょう:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Artist</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">10</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Album</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    artist <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Artist<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Song</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    artist <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Artist<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    album <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Album<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>RESTRICT<span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">Song</code> によって参照されている <code class=\"docutils literal notranslate\">Album</code> を削除することになるとしても、 <code class=\"docutils literal notranslate\">Artist</code> を削除することは可能です。なぜなら <code class=\"docutils literal notranslate\">Song</code> も、カスケードリレーションシップを通して <code class=\"docutils literal notranslate\">Artist</code> 自身を参照しているからです。例えば以下のようになります：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>artist_one <span class=\"o\">=</span> Artist<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;artist one&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>artist_two <span class=\"o\">=</span> Artist<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>name<span class=\"o\">=</span><span class=\"s2\">&quot;artist two&quot;</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>album_one <span class=\"o\">=</span> Album<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>artist<span class=\"o\">=</span>artist_one<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>album_two <span class=\"o\">=</span> Album<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>artist<span class=\"o\">=</span>artist_two<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>song_one <span class=\"o\">=</span> Song<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>artist<span class=\"o\">=</span>artist_one<span class=\"p\">,</span> album<span class=\"o\">=</span>album_one<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>song_two <span class=\"o\">=</span> Song<span class=\"o\">.</span>objects<span class=\"o\">.</span>create<span class=\"p\">(</span>artist<span class=\"o\">=</span>artist_one<span class=\"p\">,</span> album<span class=\"o\">=</span>album_two<span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>album_one<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\"># Raises RestrictedError.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>artist_two<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\"># Raises RestrictedError.</span>\n<span class=\"gp\">&gt;&gt;&gt; </span>artist_one<span class=\"o\">.</span>delete<span class=\"p\">()</span>\n<span class=\"go\">(4, {&#39;Song&#39;: 2, &#39;Album&#39;: 1, &#39;Artist&#39;: 1})</span>\n</code></pre></div>\n</dd></dl>\n\n</li>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SET_NULL\">\n<span class=\"sig-name descname\">SET_NULL</span><a class=\"heading-anchor\" href=\"#django.db.models.SET_NULL\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> に null をセットします。これは <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> が <code class=\"docutils literal notranslate\">True</code> の場合のみ可能です。</p>\n</dd></dl>\n\n</li>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SET_DEFAULT\">\n<span class=\"sig-name descname\">SET_DEFAULT</span><a class=\"heading-anchor\" href=\"#django.db.models.SET_DEFAULT\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> にデフォルト値を設定します。 <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> にデフォルト値が設定されている必要があります。</p>\n</dd></dl>\n\n</li>\n<li><dl class=\"py function\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.SET\">\n<span class=\"sig-name descname\">SET</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.SET\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Set the <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> to the value passed to\n<a class=\"reference internal\" href=\"#django.db.models.SET\" title=\"django.db.models.SET\"><code class=\"xref py py-func docutils literal notranslate\">SET()</code></a>, or if a callable is passed in,\nthe result of calling it. In most cases, passing a callable will be\nnecessary to avoid executing queries at the time your <code class=\"docutils literal notranslate\">models.py</code> is\nimported:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.contrib.auth</span> <span class=\"kn\">import</span> get_user_model\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">def</span> <span class=\"nf\">get_sentinel_user</span><span class=\"p\">():</span>\n    <span class=\"k\">return</span> get_user_model<span class=\"p\">()</span><span class=\"o\">.</span>objects<span class=\"o\">.</span>get_or_create<span class=\"p\">(</span>username<span class=\"o\">=</span><span class=\"s2\">&quot;deleted&quot;</span><span class=\"p\">)[</span><span class=\"mi\">0</span><span class=\"p\">]</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MyModel</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    user <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        settings<span class=\"o\">.</span>AUTH_USER_MODEL<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>SET<span class=\"p\">(</span>get_sentinel_user<span class=\"p\">),</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n</li>\n<li><dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.DO_NOTHING\">\n<span class=\"sig-name descname\">DO_NOTHING</span><a class=\"heading-anchor\" href=\"#django.db.models.DO_NOTHING\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>何もしません。データベースのバックエンドが参照整合性を強制している場合、手動で SQL の <code class=\"docutils literal notranslate\">ON DELETE</code> 制約をデータベースフィールドに追加しない限り、 <a class=\"reference internal\" href=\"/ja/6.0/ref/exceptions/#django.db.IntegrityError\" title=\"django.db.IntegrityError\"><code class=\"xref py py-exc docutils literal notranslate\">IntegrityError</code></a> が発生します。</p>\n</dd></dl>\n\n</li>\n</ul>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.limit_choices_to\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">limit_choices_to</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.limit_choices_to\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このフィールドが <code class=\"docutils literal notranslate\">ModelForm</code> や管理画面でレンダリングされる際に、このフィールドで選択可能な選択肢に制限を設定します（デフォルトでは、クエリセット内のすべてのオブジェクトが選択可能です）。辞書、<a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q</code></a> オブジェクト、または辞書や <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q</code></a> オブジェクトを返す呼び出し可能オブジェクトのいずれかを使用できます。</p>\n<p>例:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>staff_member <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n    User<span class=\"p\">,</span>\n    on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n    limit_choices_to<span class=\"o\">=</span><span class=\"p\">{</span><span class=\"s2\">&quot;is_staff&quot;</span><span class=\"p\">:</span> <span class=\"kc\">True</span><span class=\"p\">},</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n<p>上記を指定すると、 <code class=\"docutils literal notranslate\">ModelForm</code> の対応するフィールドに、 <code class=\"docutils literal notranslate\">is_staff=True</code> を持つ <code class=\"docutils literal notranslate\">User</code> インスタンスのみがリストされます。これは Django の管理画面で役に立つかもしれません。</p>\n<p>呼び出し可能なオブジェクトは、例えば、Python の <code class=\"docutils literal notranslate\">datetime</code> モジュールと組み合わせて使用することで、日付の範囲で選択を制限するのに役立ちます。例えば下記のようにします：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">def</span> <span class=\"nf\">limit_pub_date_choices</span><span class=\"p\">():</span>\n    <span class=\"k\">return</span> <span class=\"p\">{</span><span class=\"s2\">&quot;pub_date__lte&quot;</span><span class=\"p\">:</span> datetime<span class=\"o\">.</span>date<span class=\"o\">.</span>today<span class=\"p\">()}</span>\n\n\nlimit_choices_to <span class=\"o\">=</span> limit_pub_date_choices\n</code></pre></div>\n<p>もし <code class=\"docutils literal notranslate\">limit_choices_to</code> が <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.Q\" title=\"django.db.models.Q\"><code class=\"xref py py-class docutils literal notranslate\">Q オブジェクト</code></a> を返す場合、これは <a class=\"reference internal\" href=\"/ja/6.0/topics/db/queries/#complex-lookups-with-q\"><span class=\"std std-ref\">複雑なクエリ</span></a> に便利です。これが管理画面で利用可能な選択肢に効果を及ぼすのは、そのフィールドがモデルの <code class=\"docutils literal notranslate\">ModelAdmin</code> の <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/#django.contrib.admin.ModelAdmin.raw_id_fields\" title=\"django.contrib.admin.ModelAdmin.raw_id_fields\"><code class=\"xref py py-attr docutils literal notranslate\">raw_id_fields</code></a> にリストされていない場合だけです。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p><code class=\"docutils literal notranslate\">limit_choices_to</code> に呼び出し可能オブジェクトが指定されている場合、新しいフォームがインスタンス化されるたびに呼び出されます。また、管理コマンドや admin によってモデルが検証されるときにも呼び出されます。admin は様々なエッジケースでフォームの入力を検証するためにクエリセットを複数回構築するので、呼び出し可能オブジェクトが複数回呼び出される可能性があります。</p>\n</aside>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.related_name\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">related_name</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.related_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リレーション先オブジェクトからこのオブジェクトへのリレーションに使用する名前です。これは <a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_query_name\" title=\"django.db.models.ForeignKey.related_query_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_query_name</code></a> (ターゲットモデルからの逆フィルタに使用する名前) のデフォルト値でもあります。詳しい説明と例については <a class=\"reference internal\" href=\"/ja/6.0/topics/db/queries/#backwards-related-objects\"><span class=\"std std-ref\">リレーション先オブジェクトのドキュメント</span></a> を参照してください。 <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-base-classes\"><span class=\"std std-ref\">抽象モデル</span></a> のリレーションを定義する際には、この値を設定する必要があることに注意してください。それにより、 <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-related-name\"><span class=\"std std-ref\">いくつかの特別な構文</span></a> が使えるようになります。</p>\n<p>Django が逆方向のリレーションを作らないようにしたい場合は、 <code class=\"docutils literal notranslate\">related_name</code> を <code class=\"docutils literal notranslate\">'+'</code> に設定するか、 <code class=\"docutils literal notranslate\">'+'</code> で終わらせてください。例えば、 <code class=\"docutils literal notranslate\">User</code> モデルがこのモデルと逆方向のリレーションを持たないようにするには下記のようにします：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>user <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n    User<span class=\"p\">,</span>\n    on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n    related_name<span class=\"o\">=</span><span class=\"s2\">&quot;+&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">)</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.related_query_name\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">related_query_name</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.related_query_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>ターゲットモデルからの逆フィルタに使用する名前です。デフォルトは <a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> か、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/options/#django.db.models.Options.default_related_name\" title=\"django.db.models.Options.default_related_name\"><code class=\"xref py py-attr docutils literal notranslate\">default_related_name</code></a> が設定されていればその値、そうでなければモデルの名前になります：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"c1\"># Declare the ForeignKey with related_query_name</span>\n<span class=\"k\">class</span> <span class=\"nc\">Tag</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    article <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Article<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n        related_name<span class=\"o\">=</span><span class=\"s2\">&quot;tags&quot;</span><span class=\"p\">,</span>\n        related_query_name<span class=\"o\">=</span><span class=\"s2\">&quot;tag&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n\n\n<span class=\"c1\"># That&#39;s now the name of the reverse filter</span>\nArticle<span class=\"o\">.</span>objects<span class=\"o\">.</span>filter<span class=\"p\">(</span>tag__name<span class=\"o\">=</span><span class=\"s2\">&quot;important&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> と同様に、<code class=\"docutils literal notranslate\">related_query_name</code> は <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-related-name\"><span class=\"std std-ref\">いくつかの特別な構文</span></a> によるアプリのラベルとクラスの補間をサポートします。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.to_field\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">to_field</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.to_field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>リレーション先オブジェクト上の、リレーション対象となるフィールドです。デフォルトでは、Djangoはリレーション先オブジェクトの主キーを使用します。別のフィールドを参照する場合、そのフィールドには <code class=\"docutils literal notranslate\">unique=True</code> が設定されている必要があります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.db_constraint\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">db_constraint</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.db_constraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この外部キーに対してデータベースに制約を作成するかどうかを制御します。デフォルトは <code class=\"docutils literal notranslate\">True</code> で、ほとんどの場合それが望ましい設定です。これを <code class=\"docutils literal notranslate\">False</code> に設定すると、データの整合性に大きな悪影響を及ぼす可能性があります。それでも、以下のようなシナリオではこの設定を行いたくなるかもしれません：</p>\n<ul class=\"simple\">\n<li><p>無効なレガシーデータを持っている場合。</p></li>\n<li><p>データベースをシャーディング（分割）している場合。</p></li>\n</ul>\n<p>これが <code class=\"docutils literal notranslate\">False</code> にセットされている場合、存在しないリレーション先オブジェクトにアクセスすると <code class=\"docutils literal notranslate\">DoesNotExist</code> 例外が発生します。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ForeignKey.swappable\">\n<span class=\"sig-prename descclassname\">ForeignKey.</span><span class=\"sig-name descname\">swappable</span><a class=\"heading-anchor\" href=\"#django.db.models.ForeignKey.swappable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> がスワップ可能なモデルを指している場合のマイグレーションフレームワークの対応を制御します。デフォルトの <code class=\"docutils literal notranslate\">True</code> の場合、<a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> が <code class=\"docutils literal notranslate\">settings.AUTH_USER_MODEL</code> (または他のスワップ可能なモデルの設定) の現在の値と一致するモデルを指している場合、リレーションシップはモデルに直接ではなく、設定への参照を使用してマイグレーションに保存されます。</p>\n<p>この設定を <code class=\"docutils literal notranslate\">False</code> に上書きしてよいのは、モデルが常にスワップされたモデルを指すべきであると確信している場合のみです。例えば、カスタムユーザーモデル用に特別に設計されたプロフィールモデルの場合などが該当します。</p>\n<p><code class=\"docutils literal notranslate\">False</code> を設定しても、スワップ可能モデルがスワップアウトされた方のモデルを参照できるわけではありません。具体的には、この設定を <code class=\"docutils literal notranslate\">False</code> にすると、この <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> を使用して作成されるマイグレーションは、指定されたモデルを常に直接参照します（そのため、例えば、対応していない <code class=\"docutils literal notranslate\">User</code> モデルを使用してマイグレーションを実行しようとした場合、明確なエラーが発生します）。</p>\n<p>迷ったときは、デフォルトの <code class=\"docutils literal notranslate\">True</code> のままにしてください。</p>\n</dd></dl>\n\n</section>\n</section>\n<section id=\"manytomanyfield\">\n<h3><code class=\"docutils literal notranslate\">ManyToManyField</code><a class=\"heading-anchor\" href=\"#manytomanyfield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">ManyToManyField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">to</em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>多対多のリレーションシップ。位置引数が必要で、モデルがリレーションを持つクラスを指定します。これは <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> での使用と全く同じ方法で機能し、<a class=\"reference internal\" href=\"#recursive-relationships\"><span class=\"std std-ref\">再帰的なリレーションシップ</span></a> や <a class=\"reference internal\" href=\"#lazy-relationships\"><span class=\"std std-ref\">遅延リレーションシップ</span></a> を含みます。</p>\n<p>リレーション先オブジェクトはフィールドの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/relations/#django.db.models.fields.related.RelatedManager\" title=\"django.db.models.fields.related.RelatedManager\"><code class=\"xref py py-class docutils literal notranslate\">RelatedManager</code></a> で追加、削除、作成ができます。</p>\n<section id=\"id2\">\n<h4>データベース上の表現<a class=\"heading-anchor\" href=\"#id2\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>裏では、Django は多対多のリレーションシップを表現するために、中間的な join テーブルを作成します。デフォルトでは、このテーブル名は多対多のフィールド名と、それを含むモデルのテーブル名を使って生成されます。データベースによっては一定以上の長さのテーブル名をサポートしていないため、これらのテーブル名は自動的に切り捨てられ、一意性のハッシュが使用されます (例:  <code class=\"docutils literal notranslate\">author_books_9cdf</code>)。 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField.db_table\" title=\"django.db.models.ManyToManyField.db_table\"><code class=\"xref py py-attr docutils literal notranslate\">db_table</code></a> オプションを使用すれば、手動でjoinテーブルの名前を指定できます。</p>\n</section>\n<section id=\"manytomany-arguments\">\n<span id=\"id3\"></span><h4>引数<a class=\"heading-anchor\" href=\"#manytomany-arguments\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p><a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> はリレーションシップがどう機能するかをコントロールする複数のオプション引数を受け付けます。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.related_name\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">related_name</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.related_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">ForeignKey.related_name</code></a> と同様です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.related_query_name\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">related_query_name</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.related_query_name\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_query_name\" title=\"django.db.models.ForeignKey.related_query_name\"><code class=\"xref py py-attr docutils literal notranslate\">ForeignKey.related_query_name</code></a> と同様です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.limit_choices_to\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">limit_choices_to</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.limit_choices_to\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.ForeignKey.limit_choices_to\" title=\"django.db.models.ForeignKey.limit_choices_to\"><code class=\"xref py py-attr docutils literal notranslate\">ForeignKey.limit_choices_to</code></a>  と同様です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.symmetrical\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">symmetrical</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.symmetrical\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>self の ManyToManyFields の定義でのみ使用されます。次のモデルを考えてみましょう：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    friends <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Django はこのモデルを処理するとき、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> を持つことを識別し、その結果 <code class=\"docutils literal notranslate\">Person</code> クラスに <code class=\"docutils literal notranslate\">person_set</code> 属性を追加しません。その代わりに、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> は対称であると仮定されます。つまり、もし私があなたの友達なら、あなたは私の友達です。</p>\n<p>もし <code class=\"docutils literal notranslate\">self</code> との多対多のリレーションシップに対称性を持たせたくない場合は、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField.symmetrical\" title=\"django.db.models.ManyToManyField.symmetrical\"><code class=\"xref py py-attr docutils literal notranslate\">symmetrical</code></a> を <code class=\"docutils literal notranslate\">False</code> に設定してください。これにより Django は逆リレーションシップの記述子を追加し、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> リレーションシップが非対称になるようにします。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.through\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">through</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.through\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Django は多対多のリレーションシップを管理するテーブルを自動生成します。しかし、中間テーブルを手動で指定したい場合は、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField.through\" title=\"django.db.models.ManyToManyField.through\"><code class=\"xref py py-attr docutils literal notranslate\">through</code></a> オプションを使って、使いたい中間テーブルを表す Django モデルを指定できます。</p>\n<p><code class=\"docutils literal notranslate\">through</code> モデルはモデルクラスを直接指定するか、モデルクラスへの <a class=\"reference internal\" href=\"#lazy-relationships\"><span class=\"std std-ref\">lazy reference</span></a> を用いて指定できます。</p>\n<p>このオプションの最も一般的な利用法は、 <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#intermediary-manytomany\"><span class=\"std std-ref\">多対多のリレーションシップに追加のデータを関連付けたい</span></a> 場合です。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>中間モデルを使用した再帰的リレーションシップでは、逆アクセサ名 (reverse accessor name) を決定することはできません。同じ名前になってしまうからです。少なくともどちらかに <a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> を設定する必要があります。もし Django が逆リレーションを作成しないことを望むなら、 <code class=\"docutils literal notranslate\">related_name</code> を <code class=\"docutils literal notranslate\">'+'</code> に設定してください。</p>\n</aside>\n<aside class=\"admonition-foreign-key-order-in-intermediary-models admonition\" role=\"note\">\n<p class=\"admonition-title\">中間モデルにおける外部キーの順序</p>\n<p>:attr:through_fields` を使わずに中間モデルを用いて同一モデルへの非対称な多対多関係を定義する場合、中間モデル内の最初の外部キーが <code class=\"docutils literal notranslate\">ManyToManyField</code> のソース側を、2 番目の外部キーがターゲット側を表すものとして扱われます。以下がその例です。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Manufacturer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n    clients <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>\n        <span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> symmetrical<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;suppliers&quot;</span><span class=\"p\">,</span> through<span class=\"o\">=</span><span class=\"s2\">&quot;Supply&quot;</span>\n    <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Supply</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    supplier <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Manufacturer<span class=\"p\">,</span> models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;supplies_given&quot;</span>\n    <span class=\"p\">)</span>\n    client <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Manufacturer<span class=\"p\">,</span> models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span> related_name<span class=\"o\">=</span><span class=\"s2\">&quot;supplies_received&quot;</span>\n    <span class=\"p\">)</span>\n    product <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">255</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>ここで、 <code class=\"docutils literal notranslate\">Manufacturer</code> モデルでは <code class=\"docutils literal notranslate\">supplier</code> としての役割で <code class=\"docutils literal notranslate\">clients</code> との多対多リレーションを定義しています。したがって、中間の <code class=\"docutils literal notranslate\">Supply</code> モデルでは、（ソースである） <code class=\"docutils literal notranslate\">supplier</code> 外部キーが、（ターゲットである） <code class=\"docutils literal notranslate\">client</code> 外部キーよりも先に配置されていなければなりません。</p>\n<p><code class=\"docutils literal notranslate\">ManyToManyField</code> において <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField.through_fields\" title=\"django.db.models.ManyToManyField.through_fields\"><code class=\"xref py py-attr docutils literal notranslate\">through_fields=(&quot;supplier&quot;, &quot;client&quot;)</code></a> と指定すると、 <code class=\"docutils literal notranslate\">through</code> モデルにおける外部キーの順序は無関係になります。</p>\n</aside>\n<p>明示的な <code class=\"docutils literal notranslate\">through</code> モデルを指定しない場合でも、関連付けを保持するために作成されたテーブルへ直接アクセスするための暗黙的な <code class=\"docutils literal notranslate\">through</code> モデルクラスが存在します。このモデルクラスは、モデルを結びつけるために、主キーと2つの外部キー、あわせて3つのフィールドを持ち、2つの外部キーには一意制約が設定されます。</p>\n<p>ソース・モデルとターゲット・モデルが異なる場合、以下のフィールドが生成されます：</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">id</code>: リレーションの主キー。</p></li>\n<li><p><code class=\"docutils literal notranslate\">&lt;containing_model&gt;_id</code>: <code class=\"docutils literal notranslate\">ManyToManyField</code> を宣言したモデルの <code class=\"docutils literal notranslate\">id</code> 。</p></li>\n<li><p><code class=\"docutils literal notranslate\">&lt;other_model&gt;_id</code>: <code class=\"docutils literal notranslate\">ManyToManyField</code> が指すモデルの <code class=\"docutils literal notranslate\">id</code> 。</p></li>\n</ul>\n<p>もし <code class=\"docutils literal notranslate\">ManyToManyField</code> が同じモデルを指している場合、以下のフィールドが生成されます：</p>\n<ul class=\"simple\">\n<li><p><code class=\"docutils literal notranslate\">id</code>: リレーションの主キー。</p></li>\n<li><p><code class=\"docutils literal notranslate\">from_&lt;model&gt;_id</code>: モデルを指すインスタンス (つまりソースインスタンス) の <code class=\"docutils literal notranslate\">id</code> です。</p></li>\n<li><p><code class=\"docutils literal notranslate\">to_&lt;model&gt;_id</code>: リレーションシップの対象となるインスタンス (つまり、ターゲットモデル・インスタンス) の <code class=\"docutils literal notranslate\">id</code> 。</p></li>\n</ul>\n<p>このクラスは、通常のモデルのように、指定されたモデルのインスタンスに関連するレコードをクエリするために使用できます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>Model<span class=\"o\">.</span>m2mfield<span class=\"o\">.</span>through<span class=\"o\">.</span>objects<span class=\"o\">.</span>all<span class=\"p\">()</span>\n</code></pre></div>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.through_fields\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">through_fields</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.through_fields\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>カスタムの中間モデルが指定されている場合にだけ使われます。Django は通常、多対多のリレーションシップを確立するために、仲介モデルのどのフィールドを使うかを自動的に決定します。しかし、以下のモデルを考えてみてください：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Person</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">50</span><span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Group</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">128</span><span class=\"p\">)</span>\n    members <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span>\n        Person<span class=\"p\">,</span>\n        through<span class=\"o\">=</span><span class=\"s2\">&quot;Membership&quot;</span><span class=\"p\">,</span>\n        through_fields<span class=\"o\">=</span><span class=\"p\">(</span><span class=\"s2\">&quot;group&quot;</span><span class=\"p\">,</span> <span class=\"s2\">&quot;person&quot;</span><span class=\"p\">),</span>\n    <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Membership</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    group <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Group<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    person <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>Person<span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n    inviter <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        Person<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n        related_name<span class=\"o\">=</span><span class=\"s2\">&quot;membership_invites&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    invite_reason <span class=\"o\">=</span> models<span class=\"o\">.</span>CharField<span class=\"p\">(</span>max_length<span class=\"o\">=</span><span class=\"mi\">64</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><code class=\"docutils literal notranslate\">Membership</code> は <code class=\"docutils literal notranslate\">Person</code> に対する外部キーを <em>2つ</em> 持っています (<code class=\"docutils literal notranslate\">person</code> と <code class=\"docutils literal notranslate\">inviter</code>) ので、リレーションシップが曖昧になり、Django はどちらを使うべきか分からなくなります。この場合、上の例のように <code class=\"docutils literal notranslate\">through_fields</code> を使って、 Django がどの外部キーを使うかを明示的に指定する必要があります。</p>\n<p><code class=\"docutils literal notranslate\">through_fields</code> は2値タプル <code class=\"docutils literal notranslate\">('field1', 'field2')</code> を受け付けます。ここで <code class=\"docutils literal notranslate\">field1</code> は <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> が定義されているモデルの外部キーの名前 (この場合は <code class=\"docutils literal notranslate\">group</code>) で、 <code class=\"docutils literal notranslate\">field2</code> は対象のモデルの外部キーの名前 (この場合は <code class=\"docutils literal notranslate\">person</code>) です。</p>\n<p>多対多のリレーションシップに参加するモデルのいずれか(あるいは両方)に対して、仲介モデルに複数の外部キーがある場合、 <code class=\"docutils literal notranslate\">through_fields</code> を指定する必要があります。これは <a class=\"reference internal\" href=\"#recursive-relationships\"><span class=\"std std-ref\">再帰的なリレーションシップ</span></a> にも当てはまり、中間モデルが使われ、そのモデルへの外部キーが2つ以上ある場合、あるいは Django がどの2つを使うかを明示的に指定したい場合に適用されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.db_table\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">db_table</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.db_table\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>多対多のデータを格納するために作成するテーブルの名前です。これが指定されない場合、 Django はリレーションシップを定義するモデルのテーブル名と、 フィールド名に基づいてデフォルトの名前を決めます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.db_constraint\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">db_constraint</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.db_constraint\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>中間テーブルの外部キーに対して制約を作成するかどうかを制御します。デフォルトは <code class=\"docutils literal notranslate\">True</code> で、ほとんどの場合それが望ましい設定です。これを <code class=\"docutils literal notranslate\">False</code> に設定すると、データの整合性に大きな悪影響を及ぼす可能性があります。それでも、以下のようなシナリオでこの設定を行いたくなるかもしれません：</p>\n<ul class=\"simple\">\n<li><p>無効なレガシーデータを持っている場合。</p></li>\n<li><p>データベースをシャーディング（分割）している場合。</p></li>\n</ul>\n<p><code class=\"docutils literal notranslate\">db_constraint</code> と <code class=\"docutils literal notranslate\">through</code> の両方を渡すとエラーになります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.ManyToManyField.swappable\">\n<span class=\"sig-prename descclassname\">ManyToManyField.</span><span class=\"sig-name descname\">swappable</span><a class=\"heading-anchor\" href=\"#django.db.models.ManyToManyField.swappable\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>この <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> がスワップ可能なモデルを指している場合のマイグレーションフレームワークの対応を制御します。もし <code class=\"docutils literal notranslate\">True</code> (デフォルト) であれば、 <a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> が <code class=\"docutils literal notranslate\">settings.AUTH_USER_MODEL</code> (または他のスワップ可能なモデルの設定) の現在の値と一致するモデルを指している場合、リレーションシップはモデルに直接ではなく、設定への参照を使用してマイグレーションに保存されます。</p>\n<p>この設定を <code class=\"docutils literal notranslate\">False</code> に上書きしてよいのは、モデルが常にスワップされたモデルを指すべきであると確信している場合のみです。例えば、カスタムユーザーモデル用に特別に設計されたプロフィールモデルの場合などが該当します。</p>\n<p>迷ったときは、デフォルトの <code class=\"docutils literal notranslate\">True</code> のままにしてください。</p>\n</dd></dl>\n\n<p><a class=\"reference internal\" href=\"#django.db.models.ManyToManyField\" title=\"django.db.models.ManyToManyField\"><code class=\"xref py py-class docutils literal notranslate\">ManyToManyField</code></a> は <a class=\"reference internal\" href=\"#django.db.models.Field.validators\" title=\"django.db.models.Field.validators\"><code class=\"xref py py-attr docutils literal notranslate\">validators</code></a> をサポートしていません。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> は、データベースレベルでリレーションシップを要求する方法がないので、何の効果もありません。</p>\n</section>\n</section>\n<section id=\"onetoonefield\">\n<h3><code class=\"docutils literal notranslate\">OneToOneField</code><a class=\"heading-anchor\" href=\"#onetoonefield\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.OneToOneField\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">OneToOneField</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">to</em>, <em class=\"sig-param\">on_delete</em>, <em class=\"sig-param\">parent_link<span class=\"o\">=</span><span class=\"default_value\">False</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>options</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.OneToOneField\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>一対一のリレーションシップです。概念的には <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> に <a class=\"reference internal\" href=\"#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">unique=True</code></a> を指定したものと似ていますが、リレーションの &quot;反対側&quot; が直接1つのオブジェクトを返します。</p>\n<p>これは、何らかの方法で別のモデルを「拡張」するモデルの主キーとして最も有用です。例えば、<a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#multi-table-inheritance\"><span class=\"std std-ref\">マルチテーブル継承</span></a> は、子モデルから親モデルへの暗黙の一対一リレーションシップを追加することによって実装されます。</p>\n<p>位置引数が1つ必要で、モデルが関連付けられるクラスを指定します。これは <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> と全く同じ方法で機能し、<a class=\"reference internal\" href=\"#recursive-relationships\"><span class=\"std std-ref\">再帰的なリレーションシップ</span></a> や <a class=\"reference internal\" href=\"#lazy-relationships\"><span class=\"std std-ref\">遅延リレーションシップ</span></a> に関するすべてのオプションが含まれます。</p>\n<p>もし <code class=\"docutils literal notranslate\">OneToOneField</code> に <a class=\"reference internal\" href=\"#django.db.models.ForeignKey.related_name\" title=\"django.db.models.ForeignKey.related_name\"><code class=\"xref py py-attr docutils literal notranslate\">related_name</code></a> 引数を指定しなければ、 Django は現在のモデルの小文字の名前をデフォルト値として使用します。</p>\n<p>次の例では、</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.conf</span> <span class=\"kn\">import</span> settings\n<span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">MySpecialUser</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    user <span class=\"o\">=</span> models<span class=\"o\">.</span>OneToOneField<span class=\"p\">(</span>\n        settings<span class=\"o\">.</span>AUTH_USER_MODEL<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n    supervisor <span class=\"o\">=</span> models<span class=\"o\">.</span>OneToOneField<span class=\"p\">(</span>\n        settings<span class=\"o\">.</span>AUTH_USER_MODEL<span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n        related_name<span class=\"o\">=</span><span class=\"s2\">&quot;supervisor_of&quot;</span><span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>出来上がった <code class=\"docutils literal notranslate\">User</code> モデルは以下の属性を持つことになります：</p>\n<div class=\"code-block\" data-language=\"pycon\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python console</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python console code\"><code><span class=\"gp\">&gt;&gt;&gt; </span>user <span class=\"o\">=</span> User<span class=\"o\">.</span>objects<span class=\"o\">.</span>get<span class=\"p\">(</span>pk<span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">hasattr</span><span class=\"p\">(</span>user<span class=\"p\">,</span> <span class=\"s2\">&quot;myspecialuser&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n<span class=\"gp\">&gt;&gt;&gt; </span><span class=\"nb\">hasattr</span><span class=\"p\">(</span>user<span class=\"p\">,</span> <span class=\"s2\">&quot;supervisor_of&quot;</span><span class=\"p\">)</span>\n<span class=\"go\">True</span>\n</code></pre></div>\n<p>リレーション先テーブルにエントリが存在しない場合、逆リレーションシップにアクセスすると <code class=\"docutils literal notranslate\">RelatedObjectDoesNotExist</code> 例外が発生します。これは対象モデルの <a class=\"reference internal\" href=\"/ja/6.0/ref/models/class/#django.db.models.Model.DoesNotExist\" title=\"django.db.models.Model.DoesNotExist\"><code class=\"xref py py-exc docutils literal notranslate\">Model.DoesNotExist</code></a> 例外のサブクラスであり、逆アクセサ (reverse accessor) の属性としてアクセスできます。たとえば、ユーザーに <code class=\"docutils literal notranslate\">MySpecialUser</code> によって指定されたスーパーバイザーがいない場合：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">try</span><span class=\"p\">:</span>\n    user<span class=\"o\">.</span>supervisor_of\n<span class=\"k\">except</span> User<span class=\"o\">.</span>supervisor_of<span class=\"o\">.</span>RelatedObjectDoesNotExist<span class=\"p\">:</span>\n    <span class=\"k\">pass</span>\n</code></pre></div>\n<p id=\"onetoone-arguments\">さらに、<code class=\"docutils literal notranslate\">OneToOneField</code> は <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> が受け付ける全ての引数に加え、1つの追加引数を受け付けます：</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.OneToOneField.parent_link\">\n<span class=\"sig-prename descclassname\">OneToOneField.</span><span class=\"sig-name descname\">parent_link</span><a class=\"heading-anchor\" href=\"#django.db.models.OneToOneField.parent_link\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">True</code> に設定され、他の <a class=\"reference internal\" href=\"/ja/6.0/glossary/#term-concrete-model\"><span class=\"xref std std-term\">concrete model</span></a> から継承されたモデルで使用された場合、サブクラス化によって通常は暗黙的に作成される追加の <code class=\"docutils literal notranslate\">OneToOneField</code> の代わりに、このフィールドが親クラスへのリンクとして使用されるべきことを示します。</p>\n</dd></dl>\n\n<p><code class=\"docutils literal notranslate\">OneToOneField</code> の使用例については <a class=\"reference internal\" href=\"/ja/6.0/topics/db/examples/one_to_one/\"><span class=\"doc\">一対一のリレーションシップ</span></a> を参照してください。</p>\n</section>\n<section id=\"lazy-relationships\">\n<span id=\"id4\"></span><h3>遅延リレーションシップ<a class=\"heading-anchor\" href=\"#lazy-relationships\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>遅延リレーションシップを使用すると、モデルを名前（文字列）で参照したり、再帰的リレーションシップを作成したりできます。文字列は、任意のリレーションシップフィールドの最初の引数として使用でき、モデルを遅延参照します。遅延参照には、<a class=\"reference internal\" href=\"#recursive-relationships\"><span class=\"std std-ref\">再帰的</span></a>、<a class=\"reference internal\" href=\"#relative-relationships\"><span class=\"std std-ref\">相対的</span></a>、または <a class=\"reference internal\" href=\"#absolute-relationships\"><span class=\"std std-ref\">絶対的</span></a> 参照が含まれます。</p>\n<section id=\"recursive\">\n<span id=\"recursive-relationships\"></span><h4>再帰的参照<a class=\"heading-anchor\" href=\"#recursive\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>モデルが自分自身を参照するリレーションシップを定義するには、リレーションシップフィールドの最初の引数に <code class=\"docutils literal notranslate\">&quot;self&quot;</code> を次のように使用します。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Manufacturer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    suppliers <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> symmetrical<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p><a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-base-classes\"><span class=\"std std-ref\">抽象モデル</span></a> で使用される場合、再帰的リレーションシップは、各具象サブクラスが自分自身を参照するように解決されます。</p>\n</section>\n<section id=\"relative\">\n<span id=\"relative-relationships\"></span><h4>相対参照<a class=\"heading-anchor\" href=\"#relative\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>まだ定義されていないモデルとのリレーションシップを作成する必要がある場合、そのモデルオブジェクト自体ではなく、モデル名の文字列で参照できます。</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Car</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    manufacturer <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        <span class=\"s2\">&quot;Manufacturer&quot;</span><span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Manufacturer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n    suppliers <span class=\"o\">=</span> models<span class=\"o\">.</span>ManyToManyField<span class=\"p\">(</span><span class=\"s2\">&quot;self&quot;</span><span class=\"p\">,</span> symmetrical<span class=\"o\">=</span><span class=\"kc\">False</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>以下のような方法で <a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-base-classes\"><span class=\"std std-ref\">抽象モデル</span></a> で定義されたリレーションシップは、モデルが具象モデルとしてサブクラス化されたときに解決され、抽象モデルの <code class=\"docutils literal notranslate\">app_label</code> とリレーションシップがあるわけではありません：</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">products/models.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n\n\n<span class=\"k\">class</span> <span class=\"nc\">AbstractCar</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    manufacturer <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span><span class=\"s2\">&quot;Manufacturer&quot;</span><span class=\"p\">,</span> on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">)</span>\n\n    <span class=\"k\">class</span> <span class=\"nc\">Meta</span><span class=\"p\">:</span>\n        abstract <span class=\"o\">=</span> <span class=\"kc\">True</span>\n</code></pre></figure>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\">production/models.py</code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span> <span class=\"nn\">django.db</span> <span class=\"kn\">import</span> models\n<span class=\"kn\">from</span> <span class=\"nn\">products.models</span> <span class=\"kn\">import</span> AbstractCar\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Manufacturer</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    name <span class=\"o\">=</span> models<span class=\"o\">.</span>TextField<span class=\"p\">()</span>\n\n\n<span class=\"k\">class</span> <span class=\"nc\">Car</span><span class=\"p\">(</span>AbstractCar<span class=\"p\">):</span>\n    <span class=\"k\">pass</span>\n</code></pre></figure>\n<p>この例では、<code class=\"docutils literal notranslate\">Car.manufacturer</code> リレーションシップは <code class=\"docutils literal notranslate\">production.Manufacturer</code> に解決されます。なぜなら、<code class=\"docutils literal notranslate\">production/models.py</code> ファイル内で定義された具象モデルを指しているからです。</p>\n<aside class=\"admonition-reusable-models-with-relative-references admonition\" role=\"note\">\n<p class=\"admonition-title\">相対参照を使った再利用可能なモデル</p>\n<p>相対参照を使うことで、再利用可能な抽象モデルを作成できます。相手のモデルが異なるアプリケーション内にあり、さまざまなサブクラスにおいて違う実装を持っていたとしも、そのモデルへの参照を解決できるようなリレーションシップを持つことができます。</p>\n</aside>\n</section>\n<section id=\"absolute\">\n<span id=\"absolute-relationships\"></span><h4>絶対参照<a class=\"heading-anchor\" href=\"#absolute\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h4>\n<p>絶対参照は、<code class=\"docutils literal notranslate\">app_label</code> とクラス名を使ってモデルを指定し、異なるアプリケーション間でモデルを参照できるようにします。このタイプの遅延リレーションシップは、循環インポートの解決にも役立ちます。</p>\n<p>例えば、<code class=\"docutils literal notranslate\">Manufacturer</code> モデルが別のアプリケーション <code class=\"docutils literal notranslate\">thirdpartyapp</code> に定義されている場合、次のように参照できます：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span> <span class=\"nc\">Car</span><span class=\"p\">(</span>models<span class=\"o\">.</span>Model<span class=\"p\">):</span>\n    manufacturer <span class=\"o\">=</span> models<span class=\"o\">.</span>ForeignKey<span class=\"p\">(</span>\n        <span class=\"s2\">&quot;thirdpartyapp.Manufacturer&quot;</span><span class=\"p\">,</span>\n        on_delete<span class=\"o\">=</span>models<span class=\"o\">.</span>CASCADE<span class=\"p\">,</span>\n    <span class=\"p\">)</span>\n</code></pre></div>\n<p>絶対参照は、<a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/#abstract-base-classes\"><span class=\"std std-ref\">抽象モデル</span></a> で使用される場合でも、常に同じモデルを指し示します。</p>\n</section>\n</section>\n</section>\n<section id=\"field-api-reference\">\n<h2>フィールド API リファレンス<a class=\"heading-anchor\" href=\"#field-api-reference\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field\">\n<em class=\"property\"><span class=\"k\">class</span> </em><span class=\"sig-name descname\">Field</span><a class=\"heading-anchor\" href=\"#django.db.models.Field\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドはデータベーステーブルのカラムを表す抽象クラスです。Django はフィールドを使ってデータベーステーブルを作成したり (<a class=\"reference internal\" href=\"#django.db.models.Field.db_type\" title=\"django.db.models.Field.db_type\"><code class=\"xref py py-meth docutils literal notranslate\">db_type()</code></a>)、 Python の型をデータベースにマッピングしたり (<a class=\"reference internal\" href=\"#django.db.models.Field.get_prep_value\" title=\"django.db.models.Field.get_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_prep_value()</code></a>)、逆にしたり (<a class=\"reference internal\" href=\"#django.db.models.Field.from_db_value\" title=\"django.db.models.Field.from_db_value\"><code class=\"xref py py-meth docutils literal notranslate\">from_db_value()</code></a>) します。</p>\n<p>したがって、フィールドは、特に <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model\" title=\"django.db.models.Model\"><code class=\"xref py py-class docutils literal notranslate\">モデル</code></a> や <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#django.db.models.query.QuerySet\" title=\"django.db.models.query.QuerySet\"><code class=\"xref py py-class docutils literal notranslate\">クエリセット</code></a> など、他のDjango APIにおける基本的な要素です。</p>\n<p>モデルでは、フィールドはクラス属性としてインスタンス化され、特定のテーブルのカラムを表します (<a class=\"reference internal\" href=\"/ja/6.0/topics/db/models/\"><span class=\"doc\">モデル</span></a> 参照)。フィールドには <a class=\"reference internal\" href=\"#django.db.models.Field.null\" title=\"django.db.models.Field.null\"><code class=\"xref py py-attr docutils literal notranslate\">null</code></a> や <a class=\"reference internal\" href=\"#django.db.models.Field.unique\" title=\"django.db.models.Field.unique\"><code class=\"xref py py-attr docutils literal notranslate\">unique</code></a> といった属性と、 Django がフィールドの値をデータベース固有の値にマッピングするためのメソッドがあります。</p>\n<p>フィールド <code class=\"docutils literal notranslate\">Field</code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/models/lookups/#django.db.models.lookups.RegisterLookupMixin\" title=\"django.db.models.lookups.RegisterLookupMixin\"><code class=\"xref py py-class docutils literal notranslate\">RegisterLookupMixin</code></a> のサブクラスなので、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/lookups/#django.db.models.Transform\" title=\"django.db.models.Transform\"><code class=\"xref py py-class docutils literal notranslate\">Transform</code></a> と <a class=\"reference internal\" href=\"/ja/6.0/ref/models/lookups/#django.db.models.Lookup\" title=\"django.db.models.Lookup\"><code class=\"xref py py-class docutils literal notranslate\">Lookup</code></a> の両方を登録して <code class=\"docutils literal notranslate\">QuerySet</code> で使用できます (例: <code class=\"docutils literal notranslate\">field_name__exact=&quot;foo&quot;</code>) 。デフォルトでは全ての <a class=\"reference internal\" href=\"/ja/6.0/ref/models/querysets/#field-lookups\"><span class=\"std std-ref\">組み込みのルックアップ</span></a> が登録されています。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.CharField\" title=\"django.db.models.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> のような Django 組み込みのフィールドは全て <code class=\"docutils literal notranslate\">Field</code> の具体的な実装です。独自のフィールドが必要な場合は、組み込みフィールドをサブクラス化するか、一から <code class=\"docutils literal notranslate\">Field</code> を書いてください。どちらの場合でも <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/\"><span class=\"doc\">カスタムのモデルフィールドを作成する</span></a> を参照してください。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.description\">\n<span class=\"sig-name descname\">description</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.description\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドの詳細な説明。例えば <a class=\"reference internal\" href=\"/ja/6.0/ref/contrib/admin/admindocs/#module-django.contrib.admindocs\" title=\"django.contrib.admindocs: Django's admin documentation generator.\"><code class=\"xref py py-mod docutils literal notranslate\">django.contrib.admindocs</code></a> アプリケーションなどのためのものです。</p>\n<p>説明文は以下のような形式です：</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code>description <span class=\"o\">=</span> _<span class=\"p\">(</span><span class=\"s2\">&quot;String (up to </span><span class=\"si\">%(max_length)s</span><span class=\"s2\">)&quot;</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>引数はフィールドの <code class=\"docutils literal notranslate\">__dict__</code> から補間されます。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.descriptor_class\">\n<span class=\"sig-name descname\">descriptor_class</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.descriptor_class\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>A class implementing the <a class=\"reference external\" href=\"https://docs.python.org/3/reference/datamodel.html#descriptors\" title=\"(in Python v3.14)\"><span class=\"xref std std-ref\">descriptor protocol</span></a>\nthat is instantiated and assigned to the model instance attribute. The\nconstructor must accept a single argument, the <code class=\"docutils literal notranslate\">Field</code> instance.\nOverriding this class attribute allows for customizing the get and set\nbehavior.</p>\n</dd></dl>\n\n<p>フィールド <code class=\"docutils literal notranslate\">Field</code> をデータベース固有の型にマッピングするために、 Django はいくつかのメソッドを公開しています：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.get_internal_type\">\n<span class=\"sig-name descname\">get_internal_type</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.get_internal_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>バックエンド固有の目的のために、このフィールドの名前を文字列で返します。デフォルトでは、クラス名を返します。</p>\n<p>カスタムフィールドでの使用法については <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#emulating-built-in-field-types\"><span class=\"std std-ref\">組み込みフィールド・タイプのエミュレート</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.db_type\">\n<span class=\"sig-name descname\">db_type</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">connection</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.db_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.Field\" title=\"django.db.models.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> のデータベースカラムのデータ型を、<code class=\"docutils literal notranslate\">connection</code> を考慮して返します。</p>\n<p>カスタムフィールドでの使用法については <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#custom-database-types\"><span class=\"std std-ref\">カスタムデータベースタイプ</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.rel_db_type\">\n<span class=\"sig-name descname\">rel_db_type</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">connection</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.rel_db_type\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.Field\" title=\"django.db.models.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> を指す <code class=\"docutils literal notranslate\">ForeignKey</code> や <code class=\"docutils literal notranslate\">OneToOneField</code> などのフィールドのデータベースカラムのデータ型を、<code class=\"docutils literal notranslate\">connection</code> を考慮して返します。</p>\n<p>カスタムフィールドでの使用法については <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#custom-database-types\"><span class=\"std std-ref\">カスタムデータベースタイプ</span></a> を参照してください。</p>\n</dd></dl>\n\n<p>Django がデータベースのバックエンドやフィールドとやり取りする必要がある場面は、 主に3つあります：</p>\n<ul class=\"simple\">\n<li><p>データベースへのクエリ時 (Python の値 -&gt; データベースのバックエンドの値)</p></li>\n<li><p>データベースからデータを読み込むとき (データベースのバックエンドの値 -&gt; Python の値)</p></li>\n<li><p>データベースへの保存時 (Python の値 -&gt; データベースのバックエンドの値)</p></li>\n</ul>\n<p>クエリでは <a class=\"reference internal\" href=\"#django.db.models.Field.get_db_prep_value\" title=\"django.db.models.Field.get_db_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_db_prep_value()</code></a> と <a class=\"reference internal\" href=\"#django.db.models.Field.get_prep_value\" title=\"django.db.models.Field.get_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_prep_value()</code></a> が使用されます：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.get_prep_value\">\n<span class=\"sig-name descname\">get_prep_value</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.get_prep_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">value</code> はモデルの属性の現在の値で、メソッドはクエリのパラメータとして使用できるように書かれた形式のデータを返す必要があります。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#converting-python-objects-to-query-values\"><span class=\"std std-ref\">Python オブジェクトをクエリ変数に変換する</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.get_db_prep_value\">\n<span class=\"sig-name descname\">get_db_prep_value</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</em>, <em class=\"sig-param\">connection</em>, <em class=\"sig-param\">prepared<span class=\"o\">=</span><span class=\"default_value\">False</span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.get_db_prep_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>Converts <code class=\"docutils literal notranslate\">value</code> to a backend-specific value. By default it returns\n<code class=\"docutils literal notranslate\">value</code> if <code class=\"docutils literal notranslate\">prepared=True</code>, and <a class=\"reference internal\" href=\"#django.db.models.Field.get_prep_value\" title=\"django.db.models.Field.get_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_prep_value(value)</code></a> otherwise.</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#converting-query-values-to-database-values\"><span class=\"std std-ref\">クエリの変数をデータベースの変数に変換する</span></a> を参照してください。</p>\n</dd></dl>\n\n<p>データを読み込む際には <a class=\"reference internal\" href=\"#django.db.models.Field.from_db_value\" title=\"django.db.models.Field.from_db_value\"><code class=\"xref py py-meth docutils literal notranslate\">from_db_value()</code></a> が使用されます：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.from_db_value\">\n<span class=\"sig-name descname\">from_db_value</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</em>, <em class=\"sig-param\">expression</em>, <em class=\"sig-param\">connection</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.from_db_value\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>データベースが返す値を Python オブジェクトに変換します。これは <a class=\"reference internal\" href=\"#django.db.models.Field.get_prep_value\" title=\"django.db.models.Field.get_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_prep_value()</code></a> の逆です。</p>\n<p>データベースのバックエンドはすでに正しい Python 型を返すか、バックエンド自身が変換を行うので、このメソッドはほとんどの組み込みフィールドには使われません。</p>\n<p><code class=\"docutils literal notranslate\">expression</code> は <code class=\"docutils literal notranslate\">self</code> と同様です。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#converting-values-to-python-objects\"><span class=\"std std-ref\">変数を Python オブジェクトに変換する</span></a> を参照してください。</p>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">注釈</p>\n<p>パフォーマンス上の理由から、 <code class=\"docutils literal notranslate\">from_db_value</code> は、それを必要としないフィールド (Django の全てのフィールド) では何もしない関数としては実装されていません。そのため、定義内で <code class=\"docutils literal notranslate\">super</code> を呼び出してはいけません。</p>\n</aside>\n</dd></dl>\n\n<p>保存時には <a class=\"reference internal\" href=\"#django.db.models.Field.pre_save\" title=\"django.db.models.Field.pre_save\"><code class=\"xref py py-meth docutils literal notranslate\">pre_save()</code></a> と <a class=\"reference internal\" href=\"#django.db.models.Field.get_db_prep_save\" title=\"django.db.models.Field.get_db_prep_save\"><code class=\"xref py py-meth docutils literal notranslate\">get_db_prep_save()</code></a> が使用されます：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.get_db_prep_save\">\n<span class=\"sig-name descname\">get_db_prep_save</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</em>, <em class=\"sig-param\">connection</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.get_db_prep_save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><a class=\"reference internal\" href=\"#django.db.models.Field.get_db_prep_value\" title=\"django.db.models.Field.get_db_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_db_prep_value()</code></a> と同じですが、フィールドの値をデータベースに <em>保存</em> しなければならない場合に呼び出されます。デフォルトでは <a class=\"reference internal\" href=\"#django.db.models.Field.get_db_prep_value\" title=\"django.db.models.Field.get_db_prep_value\"><code class=\"xref py py-meth docutils literal notranslate\">get_db_prep_value()</code></a> を返します。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.pre_save\">\n<span class=\"sig-name descname\">pre_save</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">model_instance</em>, <em class=\"sig-param\">add</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.pre_save\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>保存する前に値を整えるために <a class=\"reference internal\" href=\"#django.db.models.Field.get_db_prep_save\" title=\"django.db.models.Field.get_db_prep_save\"><code class=\"xref py py-meth docutils literal notranslate\">get_db_prep_save()</code></a> の前に呼び出されるメソッドです (例えば <a class=\"reference internal\" href=\"#django.db.models.DateField.auto_now\" title=\"django.db.models.DateField.auto_now\"><code class=\"xref py py-attr docutils literal notranslate\">DateField.auto_now</code></a> の場合など)。</p>\n<p><code class=\"docutils literal notranslate\">model_instance</code> はこのフィールドが属するインスタンスで、<code class=\"docutils literal notranslate\">add</code> はインスタンスが初めてデータベースに保存されるかどうかです。</p>\n<p>このフィールドの <code class=\"docutils literal notranslate\">model_instance</code> からは適切な属性の値を返す必要があります。属性名は <code class=\"docutils literal notranslate\">self.attname</code> にあります (これは <a class=\"reference internal\" href=\"#django.db.models.Field\" title=\"django.db.models.Field\"><code class=\"xref py py-class docutils literal notranslate\">Field</code></a> で設定します)。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#preprocessing-values-before-saving\"><span class=\"std std-ref\">保存する前に値を前処理する場合</span></a> を参照してください。</p>\n</dd></dl>\n\n<p>フィールドは多くの場合、シリアライズやフォームから別の型として値を受け取ります。</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.to_python\">\n<span class=\"sig-name descname\">to_python</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">value</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.to_python\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>値を正しい Python オブジェクトに変換します。これは <a class=\"reference internal\" href=\"#django.db.models.Field.value_to_string\" title=\"django.db.models.Field.value_to_string\"><code class=\"xref py py-meth docutils literal notranslate\">value_to_string()</code></a> の逆として動作し、 <a class=\"reference internal\" href=\"/ja/6.0/ref/models/instances/#django.db.models.Model.clean\" title=\"django.db.models.Model.clean\"><code class=\"xref py py-meth docutils literal notranslate\">clean()</code></a> でも呼び出されます。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#converting-values-to-python-objects\"><span class=\"std std-ref\">変数を Python オブジェクトに変換する</span></a> を参照してください。</p>\n</dd></dl>\n\n<p>データベースに保存する方法だけでなく、フィールドはその値をシリアライズする方法も知っておく必要があります：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.value_from_object\">\n<span class=\"sig-name descname\">value_from_object</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.value_from_object\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>指定されたモデルのインスタンスのフィールドの値を返します。</p>\n<p>このメソッドは <a class=\"reference internal\" href=\"#django.db.models.Field.value_to_string\" title=\"django.db.models.Field.value_to_string\"><code class=\"xref py py-meth docutils literal notranslate\">value_to_string()</code></a> でよく使われます。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.value_to_string\">\n<span class=\"sig-name descname\">value_to_string</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">obj</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.value_to_string\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p><code class=\"docutils literal notranslate\">obj</code> を文字列に変換します。フィールドの値をシリアライズするために使用します。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#converting-model-field-to-serialization\"><span class=\"std std-ref\">シリアライズするためにフィールドデータを変換する場合</span></a> を参照してください。</p>\n</dd></dl>\n\n<p><a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">モデルフォーム</code></a> を使用する場合、 <code class=\"docutils literal notranslate\">Field</code> はどのフォームフィールドで表現されるべきかを知る必要があります：</p>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.formfield\">\n<span class=\"sig-name descname\">formfield</span><span class=\"sig-paren\">(</span><em class=\"sig-param\">form_class<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\">choices_form_class<span class=\"o\">=</span><span class=\"default_value\">None</span></em>, <em class=\"sig-param\"><span class=\"o\">**</span>kwargs</em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.formfield\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>このフィールドの <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> に対するデフォルトの <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.Field\" title=\"django.forms.Field\"><code class=\"xref py py-class docutils literal notranslate\">django.forms.Field</code></a> を返します。</p>\n<p><a class=\"reference internal\" href=\"#django.db.models.Field.formfield\" title=\"django.db.models.Field.formfield\"><code class=\"xref py py-meth docutils literal notranslate\">formfield()</code></a> がオーバーライドされて <code class=\"docutils literal notranslate\">None</code> を返すようになった場合、このフィールドは <a class=\"reference internal\" href=\"/ja/6.0/topics/forms/modelforms/#django.forms.ModelForm\" title=\"django.forms.ModelForm\"><code class=\"xref py py-class docutils literal notranslate\">ModelForm</code></a> から除外されます。</p>\n<p>デフォルトでは、 <code class=\"docutils literal notranslate\">form_class</code> と <code class=\"docutils literal notranslate\">choices_form_class</code> の両方が <code class=\"docutils literal notranslate\">None</code> の場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.CharField\" title=\"django.forms.CharField\"><code class=\"xref py py-class docutils literal notranslate\">CharField</code></a> を使用します。フィールドに <a class=\"reference internal\" href=\"#django.db.models.Field.choices\" title=\"django.db.models.Field.choices\"><code class=\"xref py py-attr docutils literal notranslate\">choices</code></a> が指定されていて、 <code class=\"docutils literal notranslate\">choices_form_class</code> が指定されていない場合、 <a class=\"reference internal\" href=\"/ja/6.0/ref/forms/fields/#django.forms.TypedChoiceField\" title=\"django.forms.TypedChoiceField\"><code class=\"xref py py-class docutils literal notranslate\">TypedChoiceField</code></a> を使用します。</p>\n<p>使い方は <a class=\"reference internal\" href=\"/ja/6.0/howto/custom-model-fields/#specifying-form-field-for-model-field\"><span class=\"std std-ref\">モデルフィールドのフォームフィールドの指定</span></a> を参照してください。</p>\n</dd></dl>\n\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.deconstruct\">\n<span class=\"sig-name descname\">deconstruct</span><span class=\"sig-paren\">(</span><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.deconstruct\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドを再作成するのに十分な情報を持つ4値タプルを返します：</p>\n<ol class=\"arabic simple\">\n<li><p>モデルのフィールド名。</p></li>\n<li><p>フィールドのインポートパス (例 <code class=\"docutils literal notranslate\">&quot;django.db.models.IntegerField&quot;</code>)。移植性は高く保つべきなので、あまり特定しすぎない方が良いかもしれません。</p></li>\n<li><p>位置引数のリスト。</p></li>\n<li><p>キーワード引数の辞書。</p></li>\n</ol>\n<p>1.7 より前のバージョンでは、 <a class=\"reference internal\" href=\"/ja/6.0/topics/migrations/\"><span class=\"doc\">マイグレーション</span></a> を使用してデータをマイグレーションするために、このメソッドをフィールドに追加する必要がありました。</p>\n</dd></dl>\n\n</dd></dl>\n\n</section>\n<section id=\"registering-and-fetching-lookups\">\n<h2>ルックアップの登録と取得<a class=\"heading-anchor\" href=\"#registering-and-fetching-lookups\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>フィールド <code class=\"docutils literal notranslate\">Field</code> は <a class=\"reference internal\" href=\"/ja/6.0/ref/models/lookups/#lookup-registration-api\"><span class=\"std std-ref\">ルックアップ レジストレーション API</span></a> を実装しています。このAPIを使用して、フィールドクラスとそのインスタンスでどのルックアップを利用できるか、またフィールドからどのようにルックアップを取得するかをカスタマイズできます。</p>\n</section>\n</section>\n<section id=\"field-attribute-reference\">\n<span id=\"model-field-attributes\"></span><h1>フィールド属性 リファレンス<a class=\"heading-anchor\" href=\"#field-attribute-reference\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>すべての <code class=\"docutils literal notranslate\">Field</code> インスタンスには、その動作を詳しく調べるための属性がいくつか含まれています。フィールドの機能に依存するコードを書く必要がある場合には、 <code class=\"docutils literal notranslate\">isinstance</code> チェックの代わりにこれらの属性を使用してください。これらの属性は <a class=\"reference internal\" href=\"/ja/6.0/ref/models/meta/#model-meta-field-api\"><span class=\"std std-ref\">Model._meta API</span></a> と一緒に使うことで、特定のフィールドタイプを絞り込むことができます。カスタムモデルフィールドはこれらのフラグを実装する必要があります。</p>\n<section id=\"attributes-for-fields\">\n<h2>フィールドの属性<a class=\"heading-anchor\" href=\"#attributes-for-fields\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.auto_created\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">auto_created</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.auto_created\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>モデル継承で使用される <code class=\"docutils literal notranslate\">OneToOneField</code> のように、フィールドが自動的に作成されたかどうかを示す真偽値フラグ。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.concrete\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">concrete</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.concrete\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドにデータベース・カラムが関連付けられているかどうかを示す真偽値。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.hidden\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">hidden</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.hidden\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>デフォルトでは <a class=\"reference internal\" href=\"/ja/6.0/ref/models/meta/#django.db.models.options.Options.get_fields\" title=\"django.db.models.options.Options.get_fields\"><code class=\"xref py py-meth docutils literal notranslate\">Options.get_fields()</code></a> によって返されない隠しフィールドがあるかどうかを示す真偽値のフラグです。例えば、 <a class=\"reference internal\" href=\"#django.db.models.ForeignKey\" title=\"django.db.models.ForeignKey\"><code class=\"xref py py-class docutils literal notranslate\">ForeignKey</code></a> の逆フィールドで、 <code class=\"docutils literal notranslate\">related_name</code> が <code class=\"docutils literal notranslate\">'+'</code> で始まる場合です。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.is_relation\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">is_relation</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.is_relation\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>真偽値フラグで、フィールドが機能のために一つまたは複数の他のモデルへの参照を含んでいるかどうかを示します（例: <code class=\"docutils literal notranslate\">ForeignKey</code>, <code class=\"docutils literal notranslate\">ManyToManyField</code>, <code class=\"docutils literal notranslate\">OneToOneField</code> など）。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.model\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">model</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドが定義されているモデルを返します。フィールドがモデルの基底クラスに定義されている場合、<code class=\"docutils literal notranslate\">model</code> はインスタンスのクラスではなく基底クラスを参照します。</p>\n</dd></dl>\n\n</section>\n<section id=\"attributes-for-fields-with-relations\">\n<h2>リレーションを持つフィールドの属性<a class=\"heading-anchor\" href=\"#attributes-for-fields-with-relations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>これらの属性はリレーションのカーディナリティやその他の詳細をクエリするために使用されます。これらの属性は全てのフィールドに存在しますが、フィールドがリレーションタイプである場合のみ (<code class=\"docutils literal notranslate\">None</code> ではなく) 真偽値を持ちます (<a class=\"reference internal\" href=\"#django.db.models.Field.is_relation\" title=\"django.db.models.Field.is_relation\"><code class=\"xref py py-attr docutils literal notranslate\">Field.is_relation=True</code></a>)。</p>\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.many_to_many\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">many_to_many</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.many_to_many\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>真偽値フラグで、フィールドが多対多のリレーションを持つ場合は <code class=\"docutils literal notranslate\">True</code> となり、そうでない場合は <code class=\"docutils literal notranslate\">False</code> となります。Django で <code class=\"docutils literal notranslate\">True</code> となるフィールドは <code class=\"docutils literal notranslate\">ManyToManyField</code> だけです。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.many_to_one\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">many_to_one</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.many_to_one\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>真偽値フラグで、フィールドが <code class=\"docutils literal notranslate\">ForeignKey</code> のような多対一のリレーションを持っている場合は <code class=\"docutils literal notranslate\">True</code> となり、そうでない場合は <code class=\"docutils literal notranslate\">False</code> となります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.one_to_many\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">one_to_many</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.one_to_many\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>真偽値フラグで、フィールドが <code class=\"docutils literal notranslate\">GenericRelation</code> や <code class=\"docutils literal notranslate\">ForeignKey</code> のような一対多のリレーションを持っている場合は <code class=\"docutils literal notranslate\">True</code> となり、そうでない場合は <code class=\"docutils literal notranslate\">False</code> となります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.one_to_one\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">one_to_one</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.one_to_one\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>真偽値フラグで、フィールドが <code class=\"docutils literal notranslate\">OneToOneField</code> のような一対一のリレーションを持っている場合は <code class=\"docutils literal notranslate\">True</code> となり、そうでない場合は <code class=\"docutils literal notranslate\">False</code> となります。</p>\n</dd></dl>\n\n<dl class=\"py attribute\">\n<dt class=\"sig sig-object py\" id=\"django.db.models.Field.related_model\">\n<span class=\"sig-prename descclassname\">Field.</span><span class=\"sig-name descname\">related_model</span><a class=\"heading-anchor\" href=\"#django.db.models.Field.related_model\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd><p>フィールドのリレーション先となるモデルを指定します。例えば、 <code class=\"docutils literal notranslate\">ForeignKey(Author, on_delete=models.CASCADE)</code> の <code class=\"docutils literal notranslate\">Author</code> です。 <code class=\"docutils literal notranslate\">GenericForeignKey</code> の <code class=\"docutils literal notranslate\">related_model</code> は常に <code class=\"docutils literal notranslate\">None</code> です。</p>\n</dd></dl>\n\n</section>\n</section>\n","rootId":"","toc":[{"title":"モデルフィールドリファレンス","anchor":"","children":[{"title":"フィールドオプション","anchor":"field-options","children":[{"title":"null","anchor":"null","children":[]},{"title":"blank","anchor":"blank","children":[]},{"title":"choices","anchor":"choices","children":[{"title":"列挙型","anchor":"enumeration-types","children":[]}]},{"title":"db_column","anchor":"db-column","children":[]},{"title":"db_comment","anchor":"db-comment","children":[]},{"title":"db_default","anchor":"db-default","children":[]},{"title":"db_index","anchor":"db-index","children":[]},{"title":"db_tablespace","anchor":"db-tablespace","children":[]},{"title":"default","anchor":"default","children":[]},{"title":"editable","anchor":"editable","children":[]},{"title":"error_messages","anchor":"error-messages","children":[]},{"title":"help_text","anchor":"help-text","children":[]},{"title":"primary_key","anchor":"primary-key","children":[]},{"title":"unique","anchor":"unique","children":[]},{"title":"unique_for_date","anchor":"unique-for-date","children":[]},{"title":"unique_for_month","anchor":"unique-for-month","children":[]},{"title":"unique_for_year","anchor":"unique-for-year","children":[]},{"title":"verbose_name","anchor":"verbose-name","children":[]},{"title":"validators","anchor":"validators","children":[]}]},{"title":"フィールドの型","anchor":"field-types","children":[{"title":"AutoField","anchor":"autofield","children":[]},{"title":"BigAutoField","anchor":"bigautofield","children":[]},{"title":"BigIntegerField","anchor":"bigintegerfield","children":[]},{"title":"BinaryField","anchor":"binaryfield","children":[]},{"title":"BooleanField","anchor":"booleanfield","children":[]},{"title":"CompositePrimaryKey","anchor":"compositeprimarykey","children":[]},{"title":"CharField","anchor":"charfield","children":[]},{"title":"DateField","anchor":"datefield","children":[]},{"title":"DateTimeField","anchor":"datetimefield","children":[]},{"title":"DecimalField","anchor":"decimalfield","children":[]},{"title":"DurationField","anchor":"durationfield","children":[]},{"title":"EmailField","anchor":"emailfield","children":[]},{"title":"FileField","anchor":"filefield","children":[{"title":"FileField と FieldFile","anchor":"filefield-and-fieldfile","children":[]}]},{"title":"FilePathField","anchor":"filepathfield","children":[]},{"title":"FloatField","anchor":"floatfield","children":[]},{"title":"GeneratedField","anchor":"generatedfield","children":[]},{"title":"GenericIPAddressField","anchor":"genericipaddressfield","children":[]},{"title":"ImageField","anchor":"imagefield","children":[]},{"title":"IntegerField","anchor":"integerfield","children":[]},{"title":"JSONField","anchor":"jsonfield","children":[]},{"title":"PositiveBigIntegerField","anchor":"positivebigintegerfield","children":[]},{"title":"PositiveIntegerField","anchor":"positiveintegerfield","children":[]},{"title":"PositiveSmallIntegerField","anchor":"positivesmallintegerfield","children":[]},{"title":"SlugField","anchor":"slugfield","children":[]},{"title":"SmallAutoField","anchor":"smallautofield","children":[]},{"title":"SmallIntegerField","anchor":"smallintegerfield","children":[]},{"title":"TextField","anchor":"textfield","children":[]},{"title":"TimeField","anchor":"timefield","children":[]},{"title":"URLField","anchor":"urlfield","children":[]},{"title":"UUIDField","anchor":"uuidfield","children":[]}]},{"title":"リレーションシップフィールド","anchor":"module-django.db.models.fields.related","children":[{"title":"ForeignKey","anchor":"foreignkey","children":[{"title":"データベース上の表現","anchor":"database-representation","children":[]},{"title":"引数","anchor":"arguments","children":[]}]},{"title":"ManyToManyField","anchor":"manytomanyfield","children":[{"title":"データベース上の表現","anchor":"id2","children":[]},{"title":"引数","anchor":"manytomany-arguments","children":[]}]},{"title":"OneToOneField","anchor":"onetoonefield","children":[]},{"title":"遅延リレーションシップ","anchor":"lazy-relationships","children":[{"title":"再帰的参照","anchor":"recursive","children":[]},{"title":"相対参照","anchor":"relative","children":[]},{"title":"絶対参照","anchor":"absolute","children":[]}]}]},{"title":"フィールド API リファレンス","anchor":"field-api-reference","children":[]},{"title":"ルックアップの登録と取得","anchor":"registering-and-fetching-lookups","children":[]}]},{"title":"フィールド属性 リファレンス","anchor":"field-attribute-reference","children":[{"title":"フィールドの属性","anchor":"attributes-for-fields","children":[]},{"title":"リレーションを持つフィールドの属性","anchor":"attributes-for-fields-with-relations","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/6.0/ref/"},{"docname":"ref/models/index","title":"モデル","url":"/ja/6.0/ref/models/"}],"prev":{"docname":"ref/models/index","title":"モデル","url":"/ja/6.0/ref/models/"},"next":{"docname":"ref/models/indexes","title":"モデル index リファレンス","url":"/ja/6.0/ref/models/indexes/"},"formats":{"html":"/ja/6.0/ref/models/fields/","markdown":"/ja/6.0/ref/models/fields.md","json":"/ja/6.0/ref/models/fields.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/ref/models/fields.txt","official":"https://docs.djangoproject.com/ja/6.0/ref/models/fields/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11","1.10","1.9"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}