Django-admin commands를 직접 작성하여 manage.py에 명령어를 추가해주고 django-seed를 통해 가짜 데이터를 생성해보자.
Django-seed는 지난 가짜데이터 생성방법(Faker 활용)의 패키지가 자동 내장되어 있다.
Faker의 경우에는 직접 반복문(for or while)을 통해 로직을 짜서 여러개 생성하도록 해줘야 하지만, 이 모듈의 경우는 장고 model field에 맞게 해주기 때문에 엄청난 장점이 있다고 하겠다... 데이터 넣기 귀찮아서 찾아봤는데, 역시 프로그래머(개발자)는 귀찮은 걸 싫어하는 직업이라는 말이 맞는거 같다.
Django로 개발하면서 테스트를 위해서 데이터를 넣어야 하는 경우 일일이 다 넣기에는 귀찮고 번거로운 작업을 이 django-seed 모듈을 통하여 필드에 맞는 데이터를 자동으로 세팅해줄 수 있다.
pip install django-seed
출처: https://github.com/brobin/django-seed
먼저 장고 setting.py에 app에 추가를 해준다.
INSTALLED_APPS = (
...
'django_seed',
)
장고 가상환경내에서 아래와 같은 명령어로 편리하게 생성 가능
python manage.py seed api --number=15 # number의 갯수만큼 랜덤 데이터를 생성해주고 싶을때,
공식 홈페이지는 아래와 같이 나와있다
Ex: seeding 5 Game
and 10 Player
objects:
from django_seed import Seed
seeder = Seed.seeder()
from myapp.models import Game, Player
seeder.add_entity(Game, 5)
seeder.add_entity(Player, 10)
inserted_pks = seeder.execute()
내가 한 예시
llambda 식을 사용해서 image field를 만들어주었다.
내 경우에는 bash command로 만들어 주었기 때문에, python manage.py images.py --10 이라고 치면 10개의 랜덤 데이터가 필드에 맞게 생성되고 , 잘 성공적으로 만들어 주었을 시 00 user created라는 결과가 표시가 되도록 만들어 주었다.
from django.core.management.base import BaseCommand
from django_seed import Seed
from products.models import Images
import random
class Command(BaseCommand):
help = "This command generated users"
def add_arguments(self,parser):
parser.add_argument(
"--number", default=1, help="How many do you want create User")
def handle(self,*args, **options):
number = int(options.get("number"))
seeder = Seed.seeder()
seeder.add_entity(
Images,
number,
{
"image_url": lambda x: seeder.faker.image_url(),
}
)
#인스턴트의 execute()메서드로 실행!
seeder.execute()
#성공하면 메세지
self.stdout.write(self.style.SUCCESS(f"{number} users created!"))