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.