Fornecendo dados iniciais para modelos.

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.

Fornecendo dados iniciais com “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.

Provendo dados iniciais com migrations

Se você procura carregar automaticamente dados iniciais para sua aplicação, não use fixtures. Ao invés disso, crie uma migração para sua aplicação com as operações RunPython ou RunSQL.

Back to Top