{"title":"모델에 초기 데이터를 제공하는 방법","version":"6.0","locale":"ko","docname":"howto/initial-data","url":"/ko/6.0/howto/initial-data/","canonical":"https://djangodocs.dev/ko/6.0/howto/initial-data/","summary":"앱을 처음 설정할 때 하드 코딩된 데이터로 데이터베이스를 미리 채우는 것이 때때로 유용합니다. 마이그레이션이나 fixtures를 사용하여 초기 데이터를 제공할 수 있습니다. 마이그레이션을 사용해 초기 데이터 제공하기 Link to this heading # 앱의 초기 데이터를 자동으로…","html":"<h1>모델에 초기 데이터를 제공하는 방법<a class=\"heading-anchor\" href=\"#how-to-provide-initial-data-for-models\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>앱을 처음 설정할 때 하드 코딩된 데이터로 데이터베이스를 미리 채우는 것이 때때로 유용합니다. 마이그레이션이나 fixtures를 사용하여 초기 데이터를 제공할 수 있습니다.</p>\n<section id=\"provide-initial-data-with-migrations\">\n<h2>마이그레이션을 사용해 초기 데이터 제공하기<a class=\"heading-anchor\" href=\"#provide-initial-data-with-migrations\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>앱의 초기 데이터를 자동으로 로드하려면 :ref:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>데이터 마이그레이션&lt;data-migrations&gt;`을 생성하세요. 마이그레이션은 테스트 데이터베이스를 설정할 때 실행되므로 데이터도 해당 데이터베이스에서 사용할 수 있습니다. 다만 :ref:<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>몇 가지 제한 사항&lt;test-case-serialized-rollback&gt;`이 있습니다.</p>\n</section>\n<section id=\"provide-data-with-fixtures\">\n<span id=\"initial-data-via-fixtures\"></span><h2>fixtures를 사용해 데이터 제공하기<a class=\"heading-anchor\" href=\"#provide-data-with-fixtures\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p><span class=\"xref std std-ref\">fixtures&lt;fixtures-explanation&gt;`를 사용하여 데이터를 제공할 수도 있습니다. 다만 이 데이터는 :attr:</span>.TransactionTestCase.fixtures`를 사용하지 않는 한 자동으로 로드되지 않습니다.</p>\n<p>고정 장치는 Django가 데이터베이스로 가져오는 방법을 알고 있는 데이터의 모음입니다. 데이터가 이미 있는 경우 고정장치를 만드는 가장 간단한 방법은 :tembadmin:’manage.py dumpdata’ 명령을 사용하는 것입니다. 또는 수동으로 고정장치를 작성할 수 있으며 고정장치는 JSON, XML 또는 YAML(PyYAML_installed) 문서로 작성할 수 있습니다. :doc:’직렬화 설명서’는 지원되는 각:ref:’직렬화 형식’에 대한 자세한 정보를 제공합니다.</p>\n<p>그러나 한 예로 JSON에서 “사람” 모델의 고정장치는 다음과 같습니다.</p>\n<div class=\"code-block\" data-language=\"js\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Js</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Js code\"><code><span class=\"p\">[</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;model&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;myapp.person&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;pk&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"mf\">1</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;fields&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;John&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;Lennon&quot;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">},</span>\n<span class=\"w\">  </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;model&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;myapp.person&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;pk&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"mf\">2</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"s2\">&quot;fields&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;first_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;Paul&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">      </span><span class=\"s2\">&quot;last_name&quot;</span><span class=\"o\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;McCartney&quot;</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"w\">  </span><span class=\"p\">}</span>\n<span class=\"p\">]</span>\n</code></pre></div>\n<p>그리고 YAML로 된 동일한 fixture 가 있습니다.</p>\n<div class=\"code-block\" data-language=\"yaml\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">YAML</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"YAML code\"><code><span class=\"p p-Indicator\">-</span><span class=\"w\"> </span><span class=\"nt\">model</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">myapp.person</span>\n<span class=\"w\">  </span><span class=\"nt\">pk</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">1</span>\n<span class=\"w\">  </span><span class=\"nt\">fields</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"nt\">first_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">John</span>\n<span class=\"w\">    </span><span class=\"nt\">last_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">Lennon</span>\n<span class=\"p p-Indicator\">-</span><span class=\"w\"> </span><span class=\"nt\">model</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">myapp.person</span>\n<span class=\"w\">  </span><span class=\"nt\">pk</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">2</span>\n<span class=\"w\">  </span><span class=\"nt\">fields</span><span class=\"p\">:</span>\n<span class=\"w\">    </span><span class=\"nt\">first_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">Paul</span>\n<span class=\"w\">    </span><span class=\"nt\">last_name</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"l l-Scalar l-Scalar-Plain\">McCartney</span>\n</code></pre></div>\n<p>이 데이터는 앱 안에 있는 “고정장치” 디렉토리에 저장됩니다.</p>\n<p>:djadmin:’manage.py loaddata &lt;loaddata&gt;` <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>&lt;fixturename&gt;``를 호출하여 데이터를 로드할 수 있습니다. <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>&lt;fixturename&gt;``는 당신이 만든 fixture 파일의 이름입니다. :djadmin:<a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>loaddata`를 실행할 때마다 데이터는 고정장치에서 읽혀져 데이터베이스에 다시 로드됩니다. 이는 고정 장치에 의해 생성된 행 중 하나를 변경한 후 :djadmin:<a href=\"#id7\"><span class=\"problematic\" id=\"id8\">`</span></a>loaddata`를 다시 실행하는 경우, 변경 내용이 모두 지워진다는 의미입니다.</p>\n<section id=\"tell-django-where-to-look-for-fixture-files\">\n<h3>Django가 fixture 파일을 찾을 위치 지정하기<a class=\"heading-anchor\" href=\"#tell-django-where-to-look-for-fixture-files\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>기본적으로 Django는 각 앱 내부의 <code class=\"docutils literal notranslate\"><span class=\"pre\">fixtures</span></code> 디렉토리에서 fixtures를 찾습니다. 따라서 <code class=\"docutils literal notranslate\"><span class=\"pre\">loaddata</span> <span class=\"pre\">sample</span></code> 명령을 실행하면 <code class=\"docutils literal notranslate\"><span class=\"pre\">my_app/fixtures/sample.json``파일을</span> <span class=\"pre\">찾습니다.</span> <span class=\"pre\">이는</span> <span class=\"pre\">상대</span> <span class=\"pre\">경로에서도</span> <span class=\"pre\">동일하게</span> <span class=\"pre\">동작하므로</span> <span class=\"pre\">``loaddata</span> <span class=\"pre\">my_app/sample</span></code> 명령을 실행하면 <code class=\"docutils literal notranslate\"><span class=\"pre\">my_app/fixtures/my_app/sample.json</span></code> 파일을 찾습니다.</p>\n<p>또한 Django는 <a class=\"reference internal\" href=\"/ko/6.0/ref/settings/#std-setting-FIXTURE_DIRS\"><code class=\"xref std std-setting docutils literal notranslate\"><span class=\"pre\">FIXTURE_DIRS</span></code></a> 설정에 지정된 디렉토리에서도 fixtures를 찾습니다.</p>\n<p>기본 검색이 수행되지 않도록 하려면 fixture 파일의 위치를 절대 경로로 지정하세요. 예: <code class=\"docutils literal notranslate\"><span class=\"pre\">loaddata</span> <span class=\"pre\">/path/to/sample</span></code></p>\n<aside class=\"admonition-namespace-your-fixture-files admonition\">\n<p class=\"admonition-title\">fixture 파일에 네임스페이스 적용하기</p>\n<p>Django는 이름이 일치하는 첫 번째 fixture 파일을 찾아 사용하므로, 서로 다른 애플리케이션에 동일한 이름의 fixture 파일이 있는 경우 <code class=\"docutils literal notranslate\"><span class=\"pre\">loaddata</span></code> 명령에서 이를 구분할 수 없습니다. 이 문제를 방지하는 가장 쉬운 방법은 fixture 파일에 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">*</span></a>네임스페이스를 적용하는 것*입니다. 즉, 위의 상대 경로 예시처럼 애플리케이션 이름으로 된 디렉토리 안에 fixture 파일을 넣는 것입니다.</p>\n</aside>\n<aside class=\"admonition admonition-seealso\">\n<p class=\"admonition-title\">더 보기</p>\n<p>또한 :ref:’testing framework’에서는 고정장치를 사용하여 일관된 테스트 환경을 설정할 수 있습니다.</p>\n</aside>\n</section>\n</section>","rootId":"how-to-provide-initial-data-for-models","toc":[{"title":"마이그레이션을 사용해 초기 데이터 제공하기","anchor":"provide-initial-data-with-migrations","children":[]},{"title":"fixtures를 사용해 데이터 제공하기","anchor":"provide-data-with-fixtures","children":[{"title":"Django가 fixture 파일을 찾을 위치 지정하기","anchor":"tell-django-where-to-look-for-fixture-files","children":[]}]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to 가이드","url":"/ko/6.0/howto/"}],"prev":{"docname":"howto/index","title":"How-to 가이드","url":"/ko/6.0/howto/"},"next":{"docname":"howto/legacy-databases","title":"Django를 레거시 데이터베이스와 통합하는 방법","url":"/ko/6.0/howto/legacy-databases/"},"formats":{"html":"/ko/6.0/howto/initial-data/","markdown":"/ko/6.0/howto/initial-data.md","json":"/ko/6.0/howto/initial-data.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/howto/initial-data.txt","official":"https://docs.djangoproject.com/ko/6.0/howto/initial-data/","inVersions":["6.1","6.0","5.2","5.1","5.0","4.2","4.1","4.0","3.2","3.1","3.0","2.2","2.1","2.0","1.11"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}