티스토리 뷰
FK가 있는 경우 모두 customize 하여 생성하였습니다.
까다로워서, 여러 자료(블로그, stackoverflow 및 공식문서) 를 참고하였습니다.
모든 필드를 customize하여 seed를 정의하고
외래키의 경우 랜덤으로 부여합니다.
해당 파일은 만들고자 하는 앱 폴더 내에 management/commands 폴더를 생성한 뒤
각 폴더에 __init__.py 를 만들고 commands 안에 실행파일을 만들어줍니다.
실행은 python manage.py seed_reviews 로 진행합니다.
코드(FK 포함 모델)
한 명의 user 가 여러 개의 리뷰를 작성할 수 있고,
한 개의 movie에 여러 개의 리뷰가 달릴 수 있으므로
Review 모델 안에
user = models.Foreignkey(Model명, 기타옵션)
movie = models.Foreignkey(Model명, 기타옵션)
으로 외래키가 설정된 상태입니다.
따라서 해당 필드에 random.choice(users) 로 유저 쿼리셋중 하나를 선택하게 합니다.
movie도 마찬가지로 진행합니다.
from django.core.management.base import BaseCommand
from django_seed import Seed
from movies.models import Review, Movie
from accounts.models import User
# from faker import Faker
import random
class Command(BaseCommand):
help = "이 커맨드를 통해 랜덤한 테스트 리뷰 데이터를 만듭니다."
def add_arguments(self, parser):
parser.add_argument(
'--number', default=2, type=int, help="몇 개의 리뷰를 만드나")
def handle(self, *args, **options):
number = options.get('number')
seeder = Seed.seeder()
# fake = Faker('ko_KR')
users = User.objects.all()
movies = Movie.objects.all()
seeder.add_entity(Review, number, {
"content": lambda x: seeder.faker.paragraph(nb_sentences=1),
"rank": lambda x: random.randint(1, 5),
"created_at": lambda x: seeder.faker.date(),
"updated_at": lambda x: seeder.faker.date(),
"user": lambda x: random.choice(users),
"movie": lambda x: random.choice(movies),
})
seeder.execute()
self.stdout.write(self.style.SUCCESS(f"{number}개의 리뷰가 작성되었습니다."))
참고자료
1. 장고 시드 공식문서
https://github.com/Brobin/django-seed
GitHub - Brobin/django-seed: Seed your Django database with fake data
:seedling: Seed your Django database with fake data - GitHub - Brobin/django-seed: Seed your Django database with fake data
github.com
2. faker 공식문서
https://github.com/joke2k/faker/
GitHub - joke2k/faker: Faker is a Python package that generates fake data for you.
Faker is a Python package that generates fake data for you. - GitHub - joke2k/faker: Faker is a Python package that generates fake data for you.
github.com
2-1. faker provider document(메서드 모음-공식)
https://faker.readthedocs.io/en/master/providers/faker.providers.date_time.html
faker.providers.date_time — Faker 10.0.0 documentation
© Copyright 2014, Daniele Faraglia Revision e2ee6af8.
faker.readthedocs.io
3. 블로그
Django 앱 만들기 - 모델 테스트 데이터를 자동으로 만들기
Django 모델을 위한 테스트 데이터를 자동으로 만들어보자! 이걸 하기 전에 custom django-admin command를 만들어보자 docs.djangoproject.com/en/3.1/howto/custom-management-commands/ 아무 App 폴더에 manage..
ny0011.tistory.com
https://fenderist.tistory.com/373
[Python, Django] django-seed로 테스트데이터 자동생성
[Python, Django] django-seed로 테스트데이터 자동생성 - Django로 개발하면서 테스트를 위해서 데이터를 넣어야 하는 경우 일일이 다 넣기에는 귀찮고 번거로운 작업 - django-seed 모듈을 통하여 필드에
fenderist.tistory.com
https://fenderist.tistory.com/372
[Python, Django] Django manager로 실행할 명령어 만들기
[Python, Django] Django manager로 실행할 명령어 만들기 - django의 manager.py 파일을 통해서 서버도 실행하고 model과 DB도 매핑하는 명령어를 실행합니다. - 이런 명령어를 만드는 방법을 간단하게 소..
fenderist.tistory.com
'Django Framework' 카테고리의 다른 글
JWT TOKEN DECODE ERROR (0) | 2021.12.24 |
---|---|
[미해결] Django Seed 활용하여 MTM 포함한 모델의 test data 생성하기 (0) | 2021.12.24 |
AttributeError: 'str' object has no attribute 'decode' (0) | 2021.12.17 |
refresh token 사용시, 5분 후 로그아웃 되었을 때 프론트에서 로그아웃처리가 안되는 에러 (0) | 2021.12.16 |
Django 권한설정 permission_classes (0) | 2021.12.15 |
- Total
- Today
- Yesterday
- 개발언어추천
- ssafy6기
- 코딩도서
- 클린코드
- 개발자로드맵
- 임대차3법
- SSAFY
- ssafy후기
- 맥과윈도우로깃허브
- 디즈니얼굴
- intj여자
- 무료폰트추천
- 개발자책추천
- 개발언어순위
- 폰트추천
- 개발자도서추천
- 폰트
- 개발자커리
- 한글무료폰트추천
- ssafy합격후기
- 싸피6기
- 상업용무료폰트
- 클린코더
- 개발도서추천
- 브왈라
- 개발자
- 깃허브계정
- 깃허브계정2개
- 싸피
- ssafy결과
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |