{"title":"Come fornire i dati iniziali per i modelli","version":"4.1","locale":"it","docname":"howto/initial-data","url":"/it/4.1/howto/initial-data/","canonical":"https://djangodocs.dev/it/4.1/howto/initial-data/","summary":"It’s sometimes useful to prepopulate your database with hard-coded data when you’re first setting up an app. You can provide initial data with migrations or…","html":"<h1>Come fornire i dati iniziali per i modelli<a class=\"heading-anchor\" href=\"#how-to-provide-initial-data-for-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>It’s sometimes useful to prepopulate your database with hard-coded data when\nyou’re first setting up an app. You can provide initial data with migrations or\nfixtures.</p>\n<section id=\"providing-initial-data-with-migrations\">\n<h2>Fornisce i dati iniziali con le migrations<a class=\"heading-anchor\" href=\"#providing-initial-data-with-migrations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Se vuoi caricaricare automaticamente dati iniziali per una app, crea una <a class=\"reference internal\" href=\"/it/4.1/topics/migrations/#data-migrations\"><span class=\"std std-ref\">data migration</span></a>. Le migrazioni sono lanciate quando viene creato il database di test, così i dati saranno disponibili lì, anche se con <a class=\"reference internal\" href=\"/it/4.1/topics/testing/overview/#test-case-serialized-rollback\"><span class=\"std std-ref\">qualche limitazione</span></a>.</p>\n</section>\n<section id=\"providing-data-with-fixtures\">\n<span id=\"initial-data-via-fixtures\"></span><h2>Fornire dati con le fixtures<a class=\"heading-anchor\" href=\"#providing-data-with-fixtures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Puoi anche fornire dati usando delle fixture, però questi dati non sono caricati automaticamente, tranne che se usi <a class=\"reference internal\" href=\"/it/4.1/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>Una fixture è una collezione di dati che Django sa come importare nel database. Il modo più diretto di creare una fixture se hai già qualche dato è usare il comando <a class=\"reference internal\" href=\"/it/4.1/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>. Oppure, puoi scrivere fixture a mano; le fixture possono essere scritte come documenti JSON, XML o YAML (con <a class=\"reference external\" href=\"https://pyyaml.org/\">PyYAML</a> installato). La  <a class=\"reference internal\" href=\"/it/4.1/topics/serialization/\"><span class=\"doc\">documentazione sulla serializzazione</span></a> dà più dettagli circa ciascuno di questi <a class=\"reference internal\" href=\"/it/4.1/topics/serialization/#serialization-formats\"><span class=\"std std-ref\">serialization formats</span></a> supportati.</p>\n<p>Ad esempio, però, ecco come potrebbe apparire una fixture per un modello <code class=\"docutils literal notranslate\"><span class=\"pre\">Person</span></code> in 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>Ed ecco le stesse fixtures come 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>Archivierai questi dati nella directory <code class=\"docutils literal notranslate\"><span class=\"pre\">fixtures</span></code> all’interno della tua app.</p>\n<p>You can load data by calling <a class=\"reference internal\" href=\"/it/4.1/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>\n<code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fixturename&gt;</span></code>, where <code class=\"docutils literal notranslate\"><span class=\"pre\">&lt;fixturename&gt;</span></code> is the name of the fixture file\nyou’ve created. Each time you run <a class=\"reference internal\" href=\"/it/4.1/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a>, the data will be read\nfrom the fixture and reloaded into the database. Note this means that if you\nchange one of the rows created by a fixture and then run <a class=\"reference internal\" href=\"/it/4.1/ref/django-admin/#django-admin-loaddata\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">loaddata</span></code></a>\nagain, you’ll wipe out any changes you’ve made.</p>\n<section id=\"where-django-finds-fixture-files\">\n<h3>Dove Django trova i file fixtures<a class=\"heading-anchor\" href=\"#where-django-finds-fixture-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Di default, Django cerca nella directory <code class=\"docutils literal notranslate\"><span class=\"pre\">fixtures</span></code> dentro ad ogni app per le fixtures. Puoi impostare <a class=\"reference internal\" href=\"/it/4.1/ref/settings/#std-setting-FIXTURE_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FIXTURE_DIRS</span></code></a> ad una lista di ulteriori directory dove Django dovrebbe cercare.</p>\n<p>Qaundo lanci <a class=\"reference internal\" href=\"/it/4.1/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>, puoi anche specificare un percorso ad un file di fixture, che sovrascrive la ricerca nelle solite directory.</p>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">Vedi anche</p>\n<p>Le fixtures sono anche usate dal <a class=\"reference internal\" href=\"/it/4.1/topics/testing/tools/#topics-testing-fixtures\"><span class=\"std std-ref\">framework di test</span></a> come ausilio per approntare un ambiente di test consistente.</p>\n</aside>\n</section>\n</section>","rootId":"how-to-provide-initial-data-for-models","toc":[{"title":"Fornisce i dati iniziali con le migrations","anchor":"providing-initial-data-with-migrations","children":[]},{"title":"Fornire dati con le fixtures","anchor":"providing-data-with-fixtures","children":[{"title":"Dove Django trova i file fixtures","anchor":"where-django-finds-fixture-files","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"guide «How-to»","url":"/it/4.1/howto/"}],"prev":{"docname":"howto/error-reporting","title":"Come gestire il report degli errori","url":"/it/4.1/howto/error-reporting/"},"next":{"docname":"howto/legacy-databases","title":"Come integrare Django con un database legacy","url":"/it/4.1/howto/legacy-databases/"},"formats":{"html":"/it/4.1/howto/initial-data/","markdown":"/it/4.1/howto/initial-data.md","json":"/it/4.1/howto/initial-data.json"},"source":"https://github.com/django/django/blob/stable/4.1.x/docs/howto/initial-data.txt","official":"https://docs.djangoproject.com/it/4.1/howto/initial-data/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2"],"inLocales":["en","zh-hans","fr","ja","id","it","pt-br","ko","es","el","pl"]}