{"title":"SchemaEditor","version":"5.2","locale":"ja","docname":"ref/schema-editor","url":"/ja/5.2/ref/schema-editor/","canonical":"https://djangodocs.dev/ja/5.2/ref/schema-editor/","summary":"class BaseDatabaseSchemaEditor Link to this definition # Django のマイグレーションシステムは2つの部分に分かれています。データベースに対してどのような操作を実行するべきかを計算してその結果を保管するロジックの部分 ( django.db.migrations…","html":"<span id=\"schemaeditor\"></span><h1><code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code><a class=\"heading-anchor\" href=\"#module-django.db.backends.base.schema\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<dl class=\"py class\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor\">\n<em class=\"property\"><span class=\"k\"><span class=\"pre\">class</span></span><span class=\"w\"> </span></em><span class=\"sig-name descname\"><span class=\"pre\">BaseDatabaseSchemaEditor</span></span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Django のマイグレーションシステムは2つの部分に分かれています。データベースに対してどのような操作を実行するべきかを計算してその結果を保管するロジックの部分　(<code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.migrations</span></code>)と、「モデルを作成する」や「フィールドを削除する」といった操作を SQL に変換する、データベースの抽象レイヤーの部分です。後者の仕事を担当するのが、 <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> です。</p>\n<p>Django を使っている普通の開発者が <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> を直接扱うことはほとんどありませんが、自前のマイグレーションシステムを実装したい場合や、より高度なことが必要になった場合には、SQL を書くのではなく、こちらを選びましょう。</p>\n<p>Django のデータベースのバックエンドは、それぞれ対応するバージョンの <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> を提供しており、好きなときに <code class=\"docutils literal notranslate\"><span class=\"pre\">connection.schema_editor()</span></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\">with</span> <span class=\"n\">connection</span><span class=\"o\">.</span><span class=\"n\">schema_editor</span><span class=\"p\">()</span> <span class=\"k\">as</span> <span class=\"n\">schema_editor</span><span class=\"p\">:</span>\n    <span class=\"n\">schema_editor</span><span class=\"o\">.</span><span class=\"n\">delete_model</span><span class=\"p\">(</span><span class=\"n\">MyModel</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>これは、トランザクションや遅延SQL (<code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> 制約の作成など) のようなものを管理することを可能にするため、コンテキストマネージャを通して使用されなければなりません。</p>\n<p>すべての可能な操作をメソッドとして公開し、変更を適用したい順序で呼び出すべきです。一部の操作や変更の種類は、すべてのデータベースで可能ではありません。例えば、MyISAM は外部キー制約をサポートしていません。</p>\n<p>Django のマイグレーション機能を使うためには、サードパーティ製のデータベースバックエンドを書いたり保守したりする場合、 <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> の実装を提供する必要があります。しかし、データベースが SQL の使用やリレーショナルデザインにおいて比較的標準的である限り、組み込みの Django <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> クラスの一つをサブクラス化して、文法を少し変更するだけで済むはずです。</p>\n<section id=\"methods\">\n<h2>メソッド<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<section id=\"execute\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">execute()</span></code><a class=\"heading-anchor\" href=\"#execute\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.execute\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">execute</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">sql</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">params</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">()</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.execute\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>渡されたSQL文を実行し、パラメータが指定されている場合はそれも適用します。これは、ユーザーが望む場合にSQLを <code class=\"docutils literal notranslate\"><span class=\"pre\">.sql</span></code> ファイルにキャプチャできるように、通常のデータベースカーソルの周りに設定されたラッパーです。</p>\n</section>\n<section id=\"create-model\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">create_model()</span></code><a class=\"heading-anchor\" href=\"#create-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.create_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">create_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.create_model\"><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</section>\n<section id=\"delete-model\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">delete_model()</span></code><a class=\"heading-anchor\" href=\"#delete-model\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.delete_model\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">delete_model</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.delete_model\"><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</section>\n<section id=\"add-index\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">add_index()</span></code><a class=\"heading-anchor\" href=\"#add-index\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_index\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_index</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">index</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_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\"><span class=\"pre\">model</span></code> のテーブルに <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> を追加します。</p>\n</section>\n<section id=\"remove-index\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">remove_index()</span></code><a class=\"heading-anchor\" href=\"#remove-index\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_index\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">remove_index</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">index</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_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\"><span class=\"pre\">model</span></code> のテーブルから <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> を削除します。</p>\n</section>\n<section id=\"rename-index\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">rename_index()</span></code><a class=\"heading-anchor\" href=\"#rename-index\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.rename_index\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">rename_index</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_index</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_index</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.rename_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\"><span class=\"pre\">model</span></code> のテーブルの <code class=\"docutils literal notranslate\"><span class=\"pre\">old_index</span></code> を <code class=\"docutils literal notranslate\"><span class=\"pre\">new_index</span></code> に名前を変更します。</p>\n</section>\n<section id=\"add-constraint\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">add_constraint()</span></code><a class=\"heading-anchor\" href=\"#add-constraint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_constraint\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_constraint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">constraint</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_constraint\"><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\"><span class=\"pre\">model</span></code> のテーブルに <code class=\"docutils literal notranslate\"><span class=\"pre\">constraint</span></code> を追加します。</p>\n</section>\n<section id=\"remove-constraint\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">remove_constraint()</span></code><a class=\"heading-anchor\" href=\"#remove-constraint\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_constraint\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">remove_constraint</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">constraint</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_constraint\"><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\"><span class=\"pre\">model</span></code> のテーブルから <code class=\"docutils literal notranslate\"><span class=\"pre\">constraint</span></code> を削除します。</p>\n</section>\n<section id=\"alter-unique-together\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_unique_together()</span></code><a class=\"heading-anchor\" href=\"#alter-unique-together\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_unique_together\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_unique_together</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_unique_together</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_unique_together</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_unique_together\"><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/5.2/ref/models/options/#django.db.models.Options.unique_together\" title=\"django.db.models.Options.unique_together\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">unique_together</span></code></a> 値を変更します。これにより、新しい値に一致するまで、モデルのテーブルからユニーク制約が追加または削除されます。</p>\n</section>\n<section id=\"alter-index-together\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_index_together()</span></code><a class=\"heading-anchor\" href=\"#alter-index-together\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_index_together\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_index_together</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_index_together</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_index_together</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_index_together\"><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\"><span class=\"pre\">index_together</span></code> の値を変更します。これにより、インデックスがモデルのテーブルに追加または削除され、新しい値に一致するようになります。</p>\n</section>\n<section id=\"alter-db-table\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_db_table()</span></code><a class=\"heading-anchor\" href=\"#alter-db-table\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_db_table\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_db_table</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_db_table</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_db_table</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_db_table\"><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\"><span class=\"pre\">old_db_table</span></code> から <code class=\"docutils literal notranslate\"><span class=\"pre\">new_db_table</span></code> に変更します。</p>\n</section>\n<section id=\"alter-db-table-comment\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_db_table_comment()</span></code><a class=\"heading-anchor\" href=\"#alter-db-table-comment\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_db_table_comment\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_db_table_comment</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_db_table_comment</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_db_table_comment</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_db_table_comment\"><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\"><span class=\"pre\">model</span></code> のテーブルコメントを <code class=\"docutils literal notranslate\"><span class=\"pre\">new_db_table_comment</span></code> に変更します。</p>\n</section>\n<section id=\"alter-db-tablespace\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_db_tablespace()</span></code><a class=\"heading-anchor\" href=\"#alter-db-tablespace\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_db_tablespace\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_db_tablespace</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_db_tablespace</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_db_tablespace</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_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>モデルのテーブルをあるテーブル空間から別のテーブル空間に移動します。</p>\n</section>\n<section id=\"add-field\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">add_field()</span></code><a class=\"heading-anchor\" href=\"#add-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_field\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">add_field</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_field\"><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\"><span class=\"pre\">db_index=True</span></code> や <code class=\"docutils literal notranslate\"><span class=\"pre\">unique=True</span></code> が設定されている場合、インデックスやユニーク制約も追加されます。</p>\n<p>フィールドが <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> の値なしで <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> の場合、カラムを作成する代わりに、リレーションシップを表すためのテーブルを作成します。<code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> が提供されている場合、それは何も操作しません。</p>\n<p>フィールドが <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> である場合、これによって外部キー制約もカラムに追加されます。</p>\n</section>\n<section id=\"remove-field\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">remove_field()</span></code><a class=\"heading-anchor\" href=\"#remove-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_field\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">remove_field</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">field</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_field\"><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\"><span class=\"pre\">through</span></code> の値なしで ManyToManyField の場合、リレーションシップを追跡するために作成されたテーブルを削除します。 <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> が提供されている場合は何も操作しません。</p>\n</section>\n<section id=\"alter-field\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">alter_field()</span></code><a class=\"heading-anchor\" href=\"#alter-field\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<dl class=\"py method\">\n<dt class=\"sig sig-object py\" id=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_field\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">BaseDatabaseSchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">alter_field</span></span><span class=\"sig-paren\">(</span><em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">model</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">old_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">new_field</span></span></em>, <em class=\"sig-param\"><span class=\"n\"><span class=\"pre\">strict</span></span><span class=\"o\"><span class=\"pre\">=</span></span><span class=\"default_value\"><span class=\"pre\">False</span></span></em><span class=\"sig-paren\">)</span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.alter_field\"><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/5.2/ref/models/fields/#django.db.models.Field.db_column\" title=\"django.db.models.Field.db_column\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">db_column</span></code></a> 属性)、フィールドのタイプの変更 (フィールドクラスが変更された場合)、フィールドの <code class=\"docutils literal notranslate\"><span class=\"pre\">NULL</span></code> ステータスの変更、フィールド専用のユニーク制約やインデックスの追加または削除、主キーの変更、そして <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code> 制約の宛先の変更が含まれます。</p>\n<p>これが実行できない最も一般的な変換は、<code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> を通常のフィールドに変換すること、またはその逆です。Django はデータを失うことなくこれを行うことができないため、実行を拒否します。代わりに、<a class=\"reference internal\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_field\" title=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.remove_field\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">remove_field()</span></code></a> と <a class=\"reference internal\" href=\"#django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_field\" title=\"django.db.backends.base.schema.BaseDatabaseSchemaEditor.add_field\"><code class=\"xref py py-meth docutils literal notranslate\"><span class=\"pre\">add_field()</span></code></a> は別々に呼び出されるべきです。</p>\n<p>データベースが <code class=\"docutils literal notranslate\"><span class=\"pre\">supports_combined_alters</span></code> を持っている場合、Django はこれらの操作をできるだけ一つのデータベースコールで実行しようとします。そうでなければ、変更が必要な場合にはそれぞれの変更に対して個別の ALTER 文を発行しますが、変更が必要ない場合には ALTER を発行しません。</p>\n</section>\n</section>\n<section id=\"attributes\">\n<h2>属性<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>特に言及されない限り、すべての属性は読み取り専用です。</p>\n<section id=\"connection\">\n<h3><code class=\"docutils literal notranslate\"><span class=\"pre\">connection</span></code><a class=\"heading-anchor\" href=\"#connection\"><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.backends.base.schema.SchemaEditor.connection\">\n<span class=\"sig-prename descclassname\"><span class=\"pre\">SchemaEditor.</span></span><span class=\"sig-name descname\"><span class=\"pre\">connection</span></span><a class=\"heading-anchor\" href=\"#django.db.backends.base.schema.SchemaEditor.connection\"><span class=\"visually-hidden\">Link to this definition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>データベースへの  connection オブジェクト。connection の便利な属性に、現在アクセスしているデータベースの名前を特定するのに使える <code class=\"docutils literal notranslate\"><span class=\"pre\">alias</span></code> があります。</p>\n<p>特に、この属性は、<a class=\"reference internal\" href=\"/ja/5.2/howto/writing-migrations/#data-migrations-and-multiple-databases\"><span class=\"std std-ref\">複数のデータベースに対するマイグレーション</span></a> を行っているときに役に立ちます。</p>\n</section>\n</section>","rootId":"module-django.db.backends.base.schema","toc":[{"title":"メソッド","anchor":"methods","children":[{"title":"execute()","anchor":"execute","children":[]},{"title":"create_model()","anchor":"create-model","children":[]},{"title":"delete_model()","anchor":"delete-model","children":[]},{"title":"add_index()","anchor":"add-index","children":[]},{"title":"remove_index()","anchor":"remove-index","children":[]},{"title":"rename_index()","anchor":"rename-index","children":[]},{"title":"add_constraint()","anchor":"add-constraint","children":[]},{"title":"remove_constraint()","anchor":"remove-constraint","children":[]},{"title":"alter_unique_together()","anchor":"alter-unique-together","children":[]},{"title":"alter_index_together()","anchor":"alter-index-together","children":[]},{"title":"alter_db_table()","anchor":"alter-db-table","children":[]},{"title":"alter_db_table_comment()","anchor":"alter-db-table-comment","children":[]},{"title":"alter_db_tablespace()","anchor":"alter-db-tablespace","children":[]},{"title":"add_field()","anchor":"add-field","children":[]},{"title":"remove_field()","anchor":"remove-field","children":[]},{"title":"alter_field()","anchor":"alter-field","children":[]}]},{"title":"属性","anchor":"attributes","children":[{"title":"connection","anchor":"connection","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"API リファレンス","url":"/ja/5.2/ref/"}],"prev":{"docname":"ref/request-response","title":"リクエストとレスポンスのオブジェクト","url":"/ja/5.2/ref/request-response/"},"next":{"docname":"ref/settings","title":"設定","url":"/ja/5.2/ref/settings/"},"formats":{"html":"/ja/5.2/ref/schema-editor/","markdown":"/ja/5.2/ref/schema-editor.md","json":"/ja/5.2/ref/schema-editor.json"},"source":"https://github.com/django/django/blob/stable/5.2.x/docs/ref/schema-editor.txt","official":"https://docs.djangoproject.com/ja/5.2/ref/schema-editor/","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"]}