Fornecendo dados iniciais para modelos.

Algumas vezes é útil pré-popular seu banco de dados com dados codificados no sistema quando se está configurando uma aplicação pela primeira vez. Você pode fornecer dados iniciais através das “fixtures”.

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 “fixtre” 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