# TIL 프로젝트를 위한 Mock DATA 만들기 part-2

0

Mock DATA 만들기 part-2

Django-admin commands를 직접 작성하여 manage.py에 명령어를 추가해주고 django-seed를 통해 가짜 데이터를 생성해보자.

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!"))
profile
문과생 개발자되다

0개의 댓글