장고 초기 데이터 적재 방법

장고로 만든 사이트에 초기 데이터를 입력하는 특별한 방법이 있나요?
매번 쿼리나 장고 쉘을 이용하여 데이터를 생성하는 방법은 불편해 보입니다.

박응용 602

2020년 7월 9일 10:04 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

장고의 loaddata 기능을 이용하면 됩니다.

예를 들어 다음과 같은 모델이 있다고 가정했을 때

class Category(models.Model):
    name = models.CharField(max_length=20, unique=True)
    description = models.CharField(max_length=200, null=True, blank=True)
    has_answer = models.BooleanField(default=True)  # 답변가능 여부

    def __str__(self):
        return self.name

프로젝트를 신규로 디플로이 한 후 기초 데이터를 입력하고자 한다면 다음과 같이 먼저 json 파일을 만듭니다.

[
  {
    "model": "pybo.Category",
    "pk": 1,
    "fields": {
      "name": "qna",
      "description": "질문과 답변",
      "has_answer": true
    }
  },
  {
    "model": "pybo.Category",
    "pk": 2,
    "fields": {
      "name": "news",
      "description": "새로운 소식",
      "has_answer": true
    }
  }
]   

만약 위 json 파일을 test.json 이라는 파일로 저장했다면 다음처럼 장고 명령어를 실행해 주세요.

python manage.py loaddata test.json

장고의 loaddata 명령을 실행하면 손쉽게 초기데이터를 적재할 수 있습니다.

좋은 점은 여러번 실행해도 중복된 데이터가 들어가진 않습니다. 내용이 바뀔경우 수정은 잘 되구요..

박응용

M 2020년 7월 9일 10:54 오후