# documentação Django 2.0.8

# 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.