# Django 5.2.8 documentation

# Hur man tillhandahåller initiala data för modeller

It’s sometimes useful to prepopulate your database with hardcoded data when you’re first setting up an app. You can provide initial data with migrations or fixtures.

## Tillhandahålla initiala data med migreringar

För att automatiskt ladda initiala data för en app, skapa en datamigrering. Migreringar körs när testdatabasen konfigureras, så data kommer att finnas tillgängliga där, med förbehåll för vissa begränsningar.

## Förse data med fixturer

Du kan också ange data med fixtures, men dessa data laddas inte automatiskt, förutom om du använder `TransactionTestCase.fixtures`.

En fixtur är en samling data som Django vet hur man importerar till en databas. Det enklaste sättet att skapa en fixtur om du redan har en del data är att använda kommandot `manage.py dumpdata`. Eller så kan du skriva fixturer för hand; fixturer kan skrivas som JSON-, XML- eller YAML-dokument (med PyYAML installerat). I serialization documentation finns mer information om vart och ett av dessa stödda serialization formats.

Men här är ett exempel på hur en fixtur för en `Person`-modell kan se ut i 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"
        }
      }
    ]

Och här är samma fixtur som 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

Du lagrar dessa data i katalogen `fixtures` i din app.

Du kan ladda data genom att anropa `manage.py loaddata` `<fixturename>`, där `<fixturename>` är namnet på den fixturfil du har skapat. Varje gång du kör `loaddata` kommer data att läsas från fixturen och laddas om till databasen. Observera att detta innebär att om du ändrar en av raderna som skapats av en fixtur och sedan kör `loaddata` igen, kommer du att radera alla ändringar du har gjort.

### Tala om för Django var de ska leta efter fixture-filer

Som standard letar Django efter fixturer i katalogen `fixtures` i varje app, så kommandot `loaddata sample` kommer att hitta filen `my_app/fixtures/sample.json`. Detta fungerar även med relativa sökvägar, så `loaddata my_app/sample` kommer att hitta filen `my_app/fixtures/my_app/sample.json`.

Django letar också efter fixturer i listan över kataloger som anges i inställningen `FIXTURE_DIRS`.

För att helt förhindra att standardsökning sker, använd en absolut sökväg för att ange platsen för din fixture-fil, t.ex. `loaddata /path/to/sample`.

Namngivning av dina fixture-filer

Django kommer att använda den första fixturfilen som den hittar vars namn matchar, så om du har fixturfiler med samma namn i olika applikationer kommer du inte att kunna skilja mellan dem i dina `loaddata`-kommandon. Det enklaste sättet att undvika det här problemet är att använda namnavstånd mellan fixturfilerna. Det vill säga genom att placera dem i en katalog som har samma namn som applikationen, som i exemplet med den relativa sökvägen ovan.

Se även

Fixturer används också av testramverket för att hjälpa till att skapa en konsekvent testmiljö.