How to provide initial data for models

    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 .

    Providing data with fixtures

    You can also provide data using fixtures, however, this data isn’t loaded automatically, except if you use .

    A fixture is a collection of data that Django knows how to import into a database. The most straightforward way of creating a fixture if you’ve already got some data is to use the manage.py dumpdata command. Or, you can write fixtures by hand; fixtures can be written as JSON, XML or YAML (with installed) documents. The serialization documentation has more details about each of these supported .

    And here’s that same fixture as YAML:

    1. pk: 1
    2. fields:
    3. first_name: John
    4. - model: myapp.person
    5. pk: 2
    6. fields:

    You’ll store this data in a fixtures directory inside your app.

    You can load data by calling manage.py loaddata <fixturename>, where <fixturename> is the name of the fixture file you’ve created. Each time you run , the data will be read from the fixture and reloaded into the database. Note this means that if you change one of the rows created by a fixture and then run loaddata again, you’ll wipe out any changes you’ve made.

    When running , you can also specify a path to a fixture file, which overrides searching the usual directories.

    See also

    Fixtures are also used by the testing framework to help set up a consistent test environment.