Advertisement
Guest User

Untitled

a guest
May 1st, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. # app_name.management.commands.bulk_create.py를 만들고 이 내용을 bulk_create.py에 복붙하세요
  2. from random import randint
  3.  
  4. from django.core.management import BaseCommand
  5.  
  6. from django.contrib.auth.hashers import make_password
  7. from django.contrib.auth.models import User
  8. from django.utils import timezone
  9.  
  10. from orm_practice_app.models import Company, Product, Order, OrderedProduct
  11.  
  12.  
  13. class Command(BaseCommand):
  14.  
  15. def add_arguments(self, parser):
  16. parser.add_argument('--user_cnt', nargs=1, type=int)
  17. parser.add_argument('--company_cnt', nargs=1, type=int)
  18. parser.add_argument('--product_cnt', nargs=1, type=int)
  19. parser.add_argument('--order_cnt', nargs=1, type=int)
  20.  
  21. def handle(self, *args, **options):
  22. user_cnt = options['user_cnt'][0] or 100
  23. company_cnt = options['company_cnt'][0] or 100
  24. product_cnt = options['product_cnt'][0] or 100
  25. order_cnt = options['order_cnt'][0] or 1000
  26.  
  27. suffix = User.objects.last().id if User.objects.exists() else 0
  28.  
  29. for i in range(0, user_cnt, 20):
  30. User.objects.bulk_create([
  31. User(
  32. username='username' + str(suffix+idx + i),
  33. email='soungryoul.kim@deliveryhero.co.kr' + str(idx + i),
  34. password=make_password('django_password'),
  35. is_active=True,
  36. ) for idx in range(1, 21)
  37. ])
  38. users = User.objects.all()
  39.  
  40. for i in range(0, company_cnt, 20):
  41. Company.objects.bulk_create([
  42. Company(
  43. name='company_name' + str(i + idx),
  44. tel_num='070-123-4567',
  45. address='서초구 ~~ 마제스타시티',
  46. ) for idx in range(1, 21)
  47. ])
  48. companies = Company.objects.all()
  49.  
  50. for i in range(0, product_cnt, 100):
  51. Product.objects.bulk_create([
  52. Product(
  53. name='product_name' + str(i + idx),
  54. price=randint(10000, 100001),
  55. product_owned_company=companies[randint(0, company_cnt - 1)//2],
  56. ) for idx in range(1, 101)
  57. ])
  58. products = Product.objects.all()
  59.  
  60. for i in range(0, order_cnt, 100):
  61. orders = Order.objects.bulk_create([
  62. Order(
  63. descriptions='주문의 상세내용입니다...' + str(i + idx),
  64. reg_date=timezone.now(),
  65. order_owner=users[randint(0, user_cnt - 1)//2],
  66. ) for idx in range(1, 101)
  67. ])
  68.  
  69. OrderedProduct.objects.bulk_create([
  70. OrderedProduct(
  71. product_cnt=randint(1, 30),
  72. amount_of_credited_mileage=randint(100, 4000),
  73. related_order=orders[idx - 1],
  74. related_product=products[randint(0, product_cnt - 1)//2],
  75. ) for idx in range(1, 101)
  76. ])
  77.  
  78. self.stdout.write(self.style.SUCCESS('Successfully Create Bulk!!!!!!'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement