{"title":"Données initiales pour les modèles","version":"4.0","locale":"fr","docname":"howto/initial-data","url":"/fr/4.0/howto/initial-data/","canonical":"https://djangodocs.dev/fr/4.0/howto/initial-data/","summary":"Il est parfois utile de pré-remplir la base de données avec des données fixes au moment de la première configuration d’une application. Vous pouvez fournir des…","html":"<h1>Données initiales pour les modèles<a class=\"heading-anchor\" href=\"#how-to-provide-initial-data-for-models\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Il est parfois utile de pré-remplir la base de données avec des données fixes au moment de la première configuration d’une application. Vous pouvez fournir des données initiales au moyen de migrations ou d’instantanés.</p>\n<section id=\"providing-initial-data-with-migrations\">\n<h2>Données initiales par les migrations<a class=\"heading-anchor\" href=\"#providing-initial-data-with-migrations\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Si vous souhaitez charger automatiquement des données initiales pour une application, créez une <a class=\"reference internal\" href=\"/fr/4.0/topics/migrations/#data-migrations\"><span class=\"std std-ref\">migration de données</span></a>. Les migrations sont exécutées lors de la mise en place de la base de données, les données y seront donc disponibles, sujettes à <a class=\"reference internal\" href=\"/fr/4.0/topics/testing/overview/#test-case-serialized-rollback\"><span class=\"std std-ref\">certaines restrictions</span></a>.</p>\n</section>\n<section id=\"providing-data-with-fixtures\">\n<span id=\"initial-data-via-fixtures\"></span><h2>Ajout de données par des instantanés<a class=\"heading-anchor\" href=\"#providing-data-with-fixtures\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Il est aussi possible de fournir des données à l’aide d’instantanés. Cependant, ces données ne sont pas chargées automatiquement, sauf si vous utilisez <a class=\"reference internal\" href=\"/fr/4.0/topics/testing/tools/#django.test.TransactionTestCase.fixtures\" title=\"django.test.TransactionTestCase.fixtures\"><code class=\"xref py py-attr docutils literal notranslate\"><span class=\"pre\">TransactionTestCase.fixtures</span></code></a>.</p>\n<p>Un instantané (fixture en anglais) est un ensemble de données que Django peut importer dans une base de données. La façon la plus directe de créer un instantané si vous avez déjà les données dans votre base est d’utiliser la commande <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-dumpdata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">dumpdata</span></code></a>. Sinon, vous pouvez aussi créer des instantanés manuellement ; ils peuvent être écrits sous forme de documents JSON, XML ou YAML (si <a class=\"reference external\" href=\"https://pyyaml.org/\">PyYAML</a> est installée). La <a class=\"reference internal\" href=\"/fr/4.0/topics/serialization/\"><span class=\"doc\">documentation sur la sérialisation</span></a> contient plus de détails sur chacun de ces <a class=\"reference internal\" href=\"/fr/4.0/topics/serialization/#serialization-formats\"><span class=\"std std-ref\">formats de sérialisation</span></a>.</p>\n<p>Comme exemple, voici à quoi pourrait ressembler un instantané pour un modèle <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> en JSON :</p>\n<div class=\"code-block\" data-language=\"js\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Js</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=\"Js code\"><code><span class=\"p\">[</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;model&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;myapp.person&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;pk&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"mf\">1</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;fields&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;Lennon&quot;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">},</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;model&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;myapp.person&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;pk&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"mf\">2</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;fields&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;Paul&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;McCartney&quot;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>Et voici le même instantané en YAML :</p>\n<div class=\"code-block\" data-language=\"yaml\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">YAML</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=\"YAML code\"><code><span class=\"p p-Indicator\">-</span><span class=\"w\"> </span><span class=\"nt\">model</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">myapp.person</span>\n<span class=\"w\">  </span><span class=\"nt\">pk</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">1</span>\n<span class=\"w\">  </span><span class=\"nt\">fields</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"nt\">first_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">John</span>\n<span class=\"w\">    </span><span class=\"nt\">last_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">Lennon</span>\n<span class=\"p p-Indicator\">-</span><span class=\"w\"> </span><span class=\"nt\">model</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">myapp.person</span>\n<span class=\"w\">  </span><span class=\"nt\">pk</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">2</span>\n<span class=\"w\">  </span><span class=\"nt\">fields</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"nt\">first_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">Paul</span>\n<span class=\"w\">    </span><span class=\"nt\">last_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">McCartney</span>\n</code></pre></div>\n<p>Ces données doivent se trouver dans un répertoire <code class=\"docutils literal notranslate\"><span class=\"pre\">fixtures</span></code> à l’intérieur de votre application.</p>\n<p>Il est possible de charger des données en appelant <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">loaddata</span></code></a> <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_instantané&gt;</span></code>, où <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;nom_instantané&gt;</span></code> est le nom du fichier instantané que vous avez créé. Lors de chaque lancement de <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a>, les données de l’instantané sont lues et rechargées dans la base de données. Notez que cela signifie que si vous modifiez l’un des objets créés par l’instantané et que vous relancez <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a>, vous écraserez toute modification effectuée en base de données.</p>\n<section id=\"where-django-finds-fixture-files\">\n<h3>Emplacements de recherche des instantanés<a class=\"heading-anchor\" href=\"#where-django-finds-fixture-files\"><span class=\"visually-hidden\">Lien vers cette rubrique</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Par défaut, Django recherche des instantanés dans un répertoire <code class=\"docutils literal notranslate\"><span class=\"pre\">fixtures</span></code> pour chaque application. Vous pouvez définir le réglage <a class=\"reference internal\" href=\"/fr/4.0/ref/settings/#std-setting-FIXTURE_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FIXTURE_DIRS</span></code></a> à une liste de répertoires supplémentaires dans lesquels Django doit chercher.</p>\n<p>Quand vous lancez <a class=\"reference internal\" href=\"/fr/4.0/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">manage.py</span> <span class=\"pre\">loaddata</span></code></a>, vous pouvez aussi indiquer un chemin vers un fichier d’instantané, ce qui remplace la recherche dans les répertoires habituels.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Voir aussi</p>\n<p>Les instantanés sont aussi employés par l’<a class=\"reference internal\" href=\"/fr/4.0/topics/testing/tools/#topics-testing-fixtures\"><span class=\"std std-ref\">infrastructure de test</span></a> pour aider à la préparation d’environnements de tests cohérents.</p>\n</aside>\n</section>\n</section>","rootId":"how-to-provide-initial-data-for-models","toc":[{"title":"Données initiales par les migrations","anchor":"providing-initial-data-with-migrations","children":[]},{"title":"Ajout de données par des instantanés","anchor":"providing-data-with-fixtures","children":[{"title":"Emplacements de recherche des instantanés","anchor":"where-django-finds-fixture-files","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"Guides pratiques","url":"/fr/4.0/howto/"}],"prev":{"docname":"howto/error-reporting","title":"Gestion du signalement des erreurs","url":"/fr/4.0/howto/error-reporting/"},"next":{"docname":"howto/legacy-databases","title":"Intégration de Django avec une base de données existante","url":"/fr/4.0/howto/legacy-databases/"},"formats":{"html":"/fr/4.0/howto/initial-data/","markdown":"/fr/4.0/howto/initial-data.md","json":"/fr/4.0/howto/initial-data.json"},"source":"https://github.com/django/django/blob/stable/4.0.x/docs/howto/initial-data.txt","official":"https://docs.djangoproject.com/fr/4.0/howto/initial-data/","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","it","pt-br","ko","es","el","pl"]}