티스토리 뷰
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
2. faker 공식문서
https://github.com/joke2k/faker/
2-1. faker provider document(메서드 모음-공식)
https://faker.readthedocs.io/en/master/providers/faker.providers.date_time.html
3. 블로그
https://fenderist.tistory.com/373
https://fenderist.tistory.com/372
'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기
- 싸피
- ssafy합격후기
- 개발언어추천
- 임대차3법
- ssafy결과
- 코딩도서
- 개발자책추천
- intj여자
- 맥과윈도우로깃허브
- 폰트
- 개발자
- 깃허브계정2개
- 폰트추천
- SSAFY
- 개발자로드맵
- 개발도서추천
- 브왈라
- 한글무료폰트추천
- 개발자커리
- 싸피6기
- 깃허브계정
- 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 | 29 | 30 |