{"title":"SchemaEditor","version":"2.2","locale":"fr","docname":"ref/schema-editor","url":"/fr/2.2/ref/schema-editor/","canonical":"https://djangodocs.dev/fr/2.2/ref/schema-editor/","summary":"class BaseDatabaseSchemaEditor Lien vers cette définition # Le système des migrations de Django est partagé en deux parties : la logique pour le calcul et le…","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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Le système des migrations de Django est partagé en deux parties : la logique pour le calcul et le stockage des opérations à exécuter (<code class=\"docutils literal notranslate\"><span class=\"pre\">django.db.migrations</span></code>) et la couche d’abstraction de base de données qui transforme des choses du genre « créer un modèle » ou « supprimer un champ » en code SQL, ce qui est le travail de <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code>.</p>\n<p>Il est peu probable que vous deviez interagir directement avec une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> en tant que développeur régulier de Django, mais si vous souhaitez écrire votre propre système de migrations ou que vous avez des besoins plus pointus, c’est beaucoup plus agréable que d’avoir à écrire du code SQL.</p>\n<p>Chae moteur de base de données dans Django fournit sa propre version de <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code>, qui est toujours accessible via le gestionnaire de contexte <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>Il doit être utilisé via le gestionnaire de contexte car cela permet de gérer des éléments comme les transactions et le code SQL différé (comme pour créer des contraintes de clé étrangère).</p>\n<p>Cet éditeur expose toutes les opérations possibles sous forme de méthodes qui doivent être appelées dans l’ordre voulu d’application des changements. Certaines opérations ou types de modification ne sont pas toujours possibles en fonction de la base de données ; par exemple, le moteur MySQL <code class=\"docutils literal notranslate\"><span class=\"pre\">MyISAM</span></code> ne gère pas les contraintes de clé étrangère.</p>\n<p>Si vous écrivez ou maintenez une moteur de base de données hors du code Django, vous allez devoir fournir une implémentation de <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> afin de pouvoir prendre en charge la fonctionnalité des migrations disponible à partir de Django 1.7. Toutefois, tant que la base de données en question respecte globalement les standards en terme de SQL et de conception relationnelle, il doit être possible d’hériter de l’une des classes <code class=\"docutils literal notranslate\"><span class=\"pre\">SchemaEditor</span></code> de Django et d’adapter légèrement la syntaxe. Notez également que les migrations vont se référer à certaines fonctionnalités de base de données (classe <code class=\"docutils literal notranslate\"><span class=\"pre\">DatabaseFeatures</span></code>), notamment les drapeaux <code class=\"docutils literal notranslate\"><span class=\"pre\">can_rollback_ddl</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">supports_combined_alters</span></code>.</p>\n<section id=\"methods\">\n<h2>Méthodes<a class=\"heading-anchor\" href=\"#methods\"><span class=\"visually-hidden\">Lien vers cette rubrique</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Exécute l’instruction SQL transmise, compte tenu des paramètres s’il y en a. Il s’agit d’une adaptation simple autour des curseurs normaux des bases de données qui ajoute la possibilité de capturer le code SQL produit dans un fichier <code class=\"docutils literal notranslate\"><span class=\"pre\">.sql</span></code> si l’utilisateur le souhaite.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Crée une nouvelle table de base de données correspondant au modèle indiqué, y compris les contraintes d’unicité et les index nécessaires.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Supprime la table de base de données correspondant au modèle indiqué, ainsi que les éventuels contraintes d’unicité et index existants.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ajoute <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> à la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">model</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Supprime <code class=\"docutils literal notranslate\"><span class=\"pre\">index</span></code> de la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">model</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"2.2\">\n<p class=\"version-note-title\">New in Django 2.2</p></aside>\n<p>Ajoute <code class=\"docutils literal notranslate\"><span class=\"pre\">constraint</span></code> à la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">model</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<aside class=\"version-note version-added\" data-version=\"2.2\">\n<p class=\"version-note-title\">New in Django 2.2</p></aside>\n<p>Supprime <code class=\"docutils literal notranslate\"><span class=\"pre\">constraint</span></code> de la table de <code class=\"docutils literal notranslate\"><span class=\"pre\">model</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Modifie la valeur <a class=\"reference internal\" href=\"/fr/2.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> d’un modèle ; cette opération ajoute ou supprime les contraintes d’unicité de la table correspondant au modèle jusqu’à ce que la nouvelle valeur soit complètement reflétée dans la base de données.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Modifie la valeur <a class=\"reference internal\" href=\"/fr/2.2/ref/models/options/#django.db.models.Options.index_together\" title=\"django.db.models.Options.index_together\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">index_together</span></code></a> d’un modèle ; cette opération ajoute ou supprime les index de la table correspondant au modèle jusqu’à ce que la nouvelle valeur soit complètement reflétée dans la base de données.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Renomme la table correspondant au modèle de <code class=\"docutils literal notranslate\"><span class=\"pre\">old_db_table</span></code> vers <code class=\"docutils literal notranslate\"><span class=\"pre\">new_db_table</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Déplace la table correspondant au modèle d’un espace de tables vers un autre.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Ajoute une colonne (ou parfois plusieurs) à la table correspondant au modèle pour représenter le champ indiqué. Cette opération peut aussi ajouter un index ou une contrainte d’unicité en fonction des paramètres  <code class=\"docutils literal notranslate\"><span class=\"pre\">db_index</span></code> et <code class=\"docutils literal notranslate\"><span class=\"pre\">unique</span></code> du champ.</p>\n<p>Si le champ est une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> sans valeur spécifique pour <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code>, cette méthode crée une table pour représenter la relation au lieu de créer une colonne. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> est spécifié pour ce champ, il s’agit d’une opération blanche.</p>\n<p>Si le champ est une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>, cette méthode ajoute aussi les contraintes de clé étrangère pour la colonne concernée.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Enlève la ou les colonnes représentant le champ dans la table correspondant au modèle, ainsi que toutes éventuelles contraintes d’unicité, de clé étrangère ou d’index qui auraient été créés pour ce champ.</p>\n<p>Si le champ est une instance <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> sans valeur spécifique pour <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code>, cette méthode supprime la table créée pour établir la relation. Si <code class=\"docutils literal notranslate\"><span class=\"pre\">through</span></code> est spécifié pour ce champ, il s’agit d’une opération blanche.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Cette méthode transforme le champ de modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">old_field</span></code> pour qu’il corresponde à <code class=\"docutils literal notranslate\"><span class=\"pre\">new_field</span></code>. Cela inclut le changement de nom de colonne (l’attribut <a class=\"reference internal\" href=\"/fr/2.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>), le changement de type de champ (si la classe du champ est différente), le changement de l’état <code class=\"docutils literal notranslate\"><span class=\"pre\">NULL</span></code> du champ, l’ajout ou la suppression de contraintes d’unicité ou d’index liés à un seul champ, le changement de l’état clé primaire et le changement de la destination d’une contrainte <code class=\"docutils literal notranslate\"><span class=\"pre\">ForeignKey</span></code>.</p>\n<p>La transformation la plus courante que cette méthode ne peut pas faire est la transformation d’un champ <code class=\"docutils literal notranslate\"><span class=\"pre\">ManyToManyField</span></code> en un champ normal et inversement ; Django ne peut pas faire cela sans perdre des données, il va donc refuser de le faire. Pour le faire quand même, il faut ajouter séparément des opérations de suppression (<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>) et d’ajout (<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>) de champ.</p>\n<p>Si la base de données prend en charge les modifications combinées (drapeau <code class=\"docutils literal notranslate\"><span class=\"pre\">supports_combined_alters</span></code>), Django essaie de faire autant que possible ces opérations dans un seul appel à la base de données ; sinon, il émet une instruction ALTER séparée pour chaque modification, mais il n’émet pas d’instruction ALTER lorsqu’aucun changement n’est nécessaire (comme South le faisait souvent).</p>\n</section>\n</section>\n<section id=\"attributes\">\n<h2>Attributs<a class=\"heading-anchor\" href=\"#attributes\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Tous les attributs doivent être considérés en lecture seule, sauf mention contraire.</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\">Lien vers cette rubrique</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\">Lien vers cette définition</span><span aria-hidden=\"true\">#</span></a></dt>\n<dd></dd></dl>\n\n<p>Un objet de connexion à la base de données. Un attribut utile de la connexion est <code class=\"docutils literal notranslate\"><span class=\"pre\">alias</span></code> qui peut être utilisé pour déterminer le nom de la base de données en cours d’accès.</p>\n<p>C’est pratique lors de migrations de données pour des <a class=\"reference internal\" href=\"/fr/2.2/howto/writing-migrations/#data-migrations-and-multiple-databases\"><span class=\"std std-ref\">migrations avec plusieurs bases de données</span></a>.</p>\n</section>\n</section>","rootId":"module-django.db.backends.base.schema","toc":[{"title":"Méthodes","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":"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_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":"Attributs","anchor":"attributes","children":[{"title":"connection","anchor":"connection","children":[]}]}],"breadcrumbs":[{"docname":"ref/index","title":"Référence de l’API","url":"/fr/2.2/ref/"}],"prev":{"docname":"ref/request-response","title":"Les objets requête et réponse","url":"/fr/2.2/ref/request-response/"},"next":{"docname":"ref/settings","title":"Réglages","url":"/fr/2.2/ref/settings/"},"formats":{"html":"/fr/2.2/ref/schema-editor/","markdown":"/fr/2.2/ref/schema-editor.md","json":"/fr/2.2/ref/schema-editor.json"},"source":"https://github.com/django/django/blob/stable/2.2.x/docs/ref/schema-editor.txt","official":"https://docs.djangoproject.com/fr/2.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","zh-hans","fr","ja","id","pt-br","ko","es","el","pl"]}