장고 초기 데이터 적재 방법
장고로 만든 사이트에 초기 데이터를 입력하는 특별한 방법이 있나요?
매번 쿼리나 장고 쉘을 이용하여 데이터를 생성하는 방법은 불편해 보입니다.
박응용 님 614
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 오후