Fornecendo dados iniciais para modelos.¶
It’s sometimes useful to pre-populate your database with hard-coded data when you’re first setting up an app. You can provide initial data with migrations or fixtures.
Provendo dados iniciais com migrations¶
If you want to automatically load initial data for an app, create a data migration. Migrations are run when setting up the test database, so the data will be available there, subject to some limitations.
Providing data with fixtures¶
You can also provide data using fixtures, however, this data isn’t loaded
automatically, except if you use TransactionTestCase.fixtures
.
Uma fixture é uma coleção de dados que o Django sabe como importar para o banco de dados. A maneira mais fácil de criar uma “fixture” se você já tem algum dado é usar o comando manage.py dumpdata
. Ou, você pode escrever fixtures manualmente; “fixtures” podem ser escritas como documentos JSON, XML ou YAML (com PyYAML installed). O documentos de serialização tem mais detalhes sobre cada um destes formatos de serialização.
Como exemplo, no entanto, aqui o que uma “fixture” para um simples modelo Person
se parece no formato 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"
}
}
]
E aqui a mesma “fixture” como 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
Você armazenará este dado em um diretório fixtures
dentro de sua app.
Carregar dados é simples: apenas chame manage.py loaddata
<fixturename>
, onde <fixturename>
é o nome do arquivo de “fixture” que você criou. Cada vez que executar loaddata
, os dados serão lidos da “fixture” e recarregados no banco de dados. Isso significa que se você alterar uma de suas linhas do banco de dados criadas por uma fixture e então executar loaddata
denovo, você irá perder qualquer alteração que tenha feito.
Onde o Django encontra arquivos de “fixture”¶
Por padrão, o Django procura por “fixtures” no diretório fixtures
dentro de cada app. Você definir a FIXTURE_DIRS
como uma lista de diretórios adicionais onde o Django deve procurar.
Quando chamar manage.py loaddata
, você pode especificar um caminho para o arquivo de “fixture”, o qual é procurado no lugar dos diretórios usuais.
Ver também
As “Fixtures” são também usadas pelo testing framework para auxiliar na configuração de um ambiente de teste consistente.