본문 바로가기
Study/Django

[Django] Django seed로 테스트 데이터 자동 생성하는 법

by ngool 2024. 10. 16.

django로 개발할 때, 테스트 데이터가 필요할 때가 있습니다.

이 때 손수 하나하나 넣어주는 건 시간적으로 매우 비효율적이죠.

 

그럴 때 쓸 수 있는 테스트 데이터 자동 생성 라이브러리!

django-seed를 소개합니다~!


Django-seed 사용 방법

1. 터미널에서 django-seed 설치하기

pip install django-seed

 

2. psycopg2도 함께 설치하기

pip install psycopg2
  • django-seed만 설치하고 테스트 데이터 생성을 시도하면, 아래와 같은 에러가 발생

 

3. settings.py의 INSTALLED_APPS에 등록하기

# settings.py

INSTALLED_APPS = [
    ...,
    'django_seed',
    ...,
]

 

4. 테스트 데이터 만들기

python manage.py seed --number [테스트 데이터 개수] [앱 이름]
  • 예시

 

5. 생성된 데이터 확인


에러 발생 시 해결 방법

seed를 만드는 명령어를 실행했더니, 아래 에러가 나신 분이 계신가요?

 

이 에러는 모델에 "DateTime 필드"가 있을 때 발생할텐데요,

시간대(Timezone)를 처리하는 과정에서 문제가 발생한 것입니다.

 

이를 해결하기 위해서는,

아래와 같이 settings.py에서 USE_TZ = False 설정을 해 주시면 됩니다.

# settings.py

# ...
USE_TZ = False
# ...

 

USE_TZ = True시간대 지원을 활성화하는 설정입니다.

 

반면, USE_TZ = False로 설정하면 Django는 시간대를 고려하지 않고 데이터를 처리합니다.

즉, 현지 시간(local time)을 그대로 데이터베이스에 저장하고 반환합니다.

 

이게 어떻게 문제를 해결했냐구요?

USE_TZ = True일 때 Django는 시간 데이터를 UTC로 변환하여 저장하려고 했고, 그 과정에서
is_dst 인자와 같은 시간대 정보와 관련된 문제가 발생했습니다.

하지만 USE_TZ = False로 설정함으로써, Django는 시간대 변환을 하지 않고, 현지 시간을 그대로 사용하게 되어
시간대 관련 처리가 불필요하게 된 것입니다.