Fornecendo dados iniciais para modelos.

Algumas vezes é útil pre-popular o seu banco de dados com dados hard-coded quando você está configurando a sua aplicação pela primeira vez. Você pode prover dados iniciais como migrations ou fixtures.

Provendo dados iniciais com migrations

Se você quer carregar automaticamente dados iniciais para a sua aplicação, crie uma data migration ` (ou migração de dados). Migrações são executadas enquanto o banco de dados de teste é configurado, então os dados serão disponíveis lá, sujeito a :ref:`algumas limitações.

Provendo dados com fixtures.

Você também pode prover dados usando fixtures, no entanto, esses dados não são carregados automaticamente, exceto se você usar 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.

Back to Top