As vezes é útil para pré-popular seu banco de dados com dados codificados, enquanto você configura sua aplicação pela primeira vez. Você pode prover dados iniciais com fixtures ou migrations.
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.
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.
dez 02, 2017