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. Le migrazioni sono lanciate quando viene creato il database di test, così i dati saranno disponibili lì, anche se con qualche limitazione.

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.

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. Oppure, puoi scrivere fixture a mano; le fixture possono essere scritte come documenti JSON, XML o YAML (con PyYAML installato). La documentazione sulla serializzazione dà più dettagli circa ciascuno di questi serialization formats supportati.

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

[
  {
    "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:

- 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 <fixturename>, where <fixturename> is the name of the fixture file you’ve created. Each time you run 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 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 ad una lista di ulteriori directory dove Django dovrebbe cercare.

Qaundo lanci manage.py loaddata, puoi anche specificare un percorso ad un file di fixture, che sovrascrive la ricerca nelle solite directory.

Vedi anche

Le fixtures sono anche usate dal framework di test come ausilio per approntare un ambiente di test consistente.

Back to Top