---
title: "Come fornire i dati iniziali per i modelli"
version: 4.1
locale: it
source: https://docs.djangoproject.com/it/4.1/howto/initial-data/
canonical: https://djangodocs.dev/it/4.1/howto/initial-data/
---
# Come fornire i dati iniziali per i modelli

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
fixtures.

## Fornisce i dati iniziali con le migrations

Se vuoi caricaricare automaticamente dati iniziali per una app, crea una [data migration](/it/4.1/topics/migrations/#data-migrations). Le migrazioni sono lanciate quando viene creato il database di test, così i dati saranno disponibili lì, anche se con [qualche limitazione](/it/4.1/topics/testing/overview/#test-case-serialized-rollback).

## Fornire dati con le fixtures

Puoi anche fornire dati usando delle fixture, però questi dati non sono caricati automaticamente, tranne che se usi [`TransactionTestCase.fixtures`](/it/4.1/topics/testing/tools/#django.test.TransactionTestCase.fixtures).

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 [`manage.py dumpdata`](/it/4.1/ref/django-admin/#django-admin-dumpdata). Oppure, puoi scrivere fixture a mano; le fixture possono essere scritte come documenti JSON, XML o YAML (con [PyYAML](https://pyyaml.org/) installato). La  [documentazione sulla serializzazione](/it/4.1/topics/serialization/) dà più dettagli circa ciascuno di questi [serialization formats](/it/4.1/topics/serialization/#serialization-formats) supportati.

Ad esempio, però, ecco come potrebbe apparire una fixture per un modello `Person` in JSON:

```js
[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]
```

Ed ecco le stesse fixtures come YAML:

```yaml
- model: myapp.person
  pk: 1
  fields:
    first_name: John
    last_name: Lennon
- model: myapp.person
  pk: 2
  fields:
    first_name: Paul
    last_name: McCartney
```

Archivierai questi dati nella directory `fixtures` all’interno della tua app.

You can load data by calling [`manage.py loaddata`](/it/4.1/ref/django-admin/#django-admin-loaddata)
`<fixturename>`, where `<fixturename>` is the name of the fixture file
you’ve created. Each time you run [`loaddata`](/it/4.1/ref/django-admin/#django-admin-loaddata), the data will be read
from the fixture and reloaded into the database. Note this means that if you
change one of the rows created by a fixture and then run [`loaddata`](/it/4.1/ref/django-admin/#django-admin-loaddata)
again, you’ll wipe out any changes you’ve made.

### Dove Django trova i file fixtures

Di default, Django cerca nella directory `fixtures` dentro ad ogni app per le fixtures. Puoi impostare [`FIXTURE_DIRS`](/it/4.1/ref/settings/#std-setting-FIXTURE_DIRS) ad una lista di ulteriori directory dove Django dovrebbe cercare.

Qaundo lanci [`manage.py loaddata`](/it/4.1/ref/django-admin/#django-admin-loaddata), puoi anche specificare un percorso ad un file di fixture, che sovrascrive la ricerca nelle solite directory.

> **See also**
>
> Le fixtures sono anche usate dal [framework di test](/it/4.1/topics/testing/tools/#topics-testing-fixtures) come ausilio per approntare un ambiente di test consistente.
