---
title: "모델에 초기 데이터를 제공하는 방법"
version: 5.0
locale: ko
source: https://docs.djangoproject.com/ko/5.0/howto/initial-data/
canonical: https://djangodocs.dev/ko/5.0/howto/initial-data/
---
# 모델에 초기 데이터를 제공하는 방법

앱을 처음 설정할 때 하드 코딩된 데이터로 데이터베이스를 미리 채우는 것이 때때로 유용합니다. 마이그레이션 또는 고정 장치와 함께 초기 데이터를 제공할 수 있습니다.

## Provide initial data with migrations

To automatically load initial data for an app, create a
[data migration](/ko/5.0/topics/migrations/#data-migrations). Migrations are run when setting up the
test database, so the data will be available there, subject to [some
limitations](/ko/5.0/topics/testing/overview/#test-case-serialized-rollback).

## Provide data with fixtures

You can also provide data using [fixtures](/ko/5.0/topics/db/fixtures/#fixtures-explanation),
however, this data isn’t loaded automatically, except if you use
[`TransactionTestCase.fixtures`](/ko/5.0/topics/testing/tools/#django.test.TransactionTestCase.fixtures).

고정 장치는 Django가 데이터베이스로 가져오는 방법을 알고 있는 데이터의 모음입니다. 데이터가 이미 있는 경우 고정장치를 만드는 가장 간단한 방법은 :tembadmin:’manage.py dumpdata’ 명령을 사용하는 것입니다. 또는 수동으로 고정장치를 작성할 수 있으며 고정장치는 JSON, XML 또는 YAML(PyYAML\_installed) 문서로 작성할 수 있습니다. :doc:’직렬화 설명서’는 지원되는 각:ref:’직렬화 형식’에 대한 자세한 정보를 제공합니다.

그러나 한 예로 JSON에서 “사람” 모델의 고정장치는 다음과 같습니다.

```js
[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]
```

그리고 YAML로 된 동일한 fixture 가 있습니다.

```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
```

이 데이터는 앱 안에 있는 “고정장치” 디렉토리에 저장됩니다.

:djadmin:’manage.py loaddata \<loaddata\>\` \<fixturename\>\`\`를 호출하여 데이터를 로드할 수 있습니다. \<fixturename\>\`\`는 당신이 만든 fixture 파일의 이름입니다. :djadmin:loaddata\`를 실행할 때마다 데이터는 고정장치에서 읽혀져 데이터베이스에 다시 로드됩니다. 이는 고정 장치에 의해 생성된 행 중 하나를 변경한 후 :djadmin:loaddata\`를 다시 실행하는 경우, 변경 내용이 모두 지워진다는 의미입니다.

### Tell Django where to look for fixture files

By default, Django looks for fixtures in the `fixtures` directory inside each
app for, so the command `loaddata sample` will find the file
`my_app/fixtures/sample.json`. This works with relative paths as well, so
`loaddata my_app/sample` will find the file
`my_app/fixtures/my_app/sample.json`.

Django also looks for fixtures in the list of directories provided in the
[`FIXTURE_DIRS`](/ko/5.0/ref/settings/#std-setting-FIXTURE_DIRS) setting.

To completely prevent default search form happening, use an absolute path to
specify the location of your fixture file, e.g. `loaddata /path/to/sample`.

> **Namespace your fixture files**
>
> Django will use the first fixture file it finds whose name matches, so if
> you have fixture files with the same name in different applications, you
> will be unable to distinguish between them in your `loaddata` commands.
> The easiest way to avoid this problem is by *namespacing* your fixture
> files. That is, by putting them inside a directory named for their
> application, as in the relative path example above.

> **See also**
>
> 또한 :ref:’testing framework’에서는 고정장치를 사용하여 일관된 테스트 환경을 설정할 수 있습니다.
