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.

Back to Top