Django Management Command๋ python manage.py shell
, python manage.py migrate
์ ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ์ฅ๊ณ ๋ฅผ ์ฌ์ฉํ ๋ ์์ฃผ ์ฌ์ฉํ๋ ๋ช
๋ น์ด๋ฅผ ๋งํ๋ค. ์ฐ๋ฆฌ๋ ์ด Django Command๋ฅผ Customํ์ฌ ์ํ๋ ๋์์ ์ํ๋ ๋ช
๋ น์ด๋ก ์ปค์คํ
ํ์ฌ ๋ง๋ค์ด ์ค ์ ์๋ค.
custom command ๋ง๋ค๊ธฐ
์ํ๋ app ํด๋ ๋ฐ์ management ํด๋๋ฅผ ๋ง๋ค๊ณ ๊ทธ ๋ฐ์ commands ํด๋๋ฅผ ๋ง๋ ๋ค.
์ฑ์ด๋ฆ/management/commands
์ด๋ฐ ๊ตฌ์กฐ๊ฐ ๋์ด์ผ ํ๋ค.
ํด๋๋ฅผ ๋ง๋ค์์ผ๋ฉด commands ํด๋ ๋ฐ์ ์ํ๋ ๋ช
๋ น์ด ์ด๋ฆ์ผ๋ก ํ์ผ์ ์์ฑํ๋ค. ๋ง์ฝ python manage.py insert_data_to_db
๋ผ๋ ์ปค์คํ
command๋ฅผ ๋ง๋ค๊ณ ์ถ์ผ๋ฉด insert_data_to_db.py
๋ผ๋ ํ์ผ์ ๋ง๋ค๋ฉด ๋๋ค.
# ์ฑ์ด๋ฆ/management/commands/insert_data_to_db.py
from django.core.management.base import BaseCommand
from apps.company_info.models import CompanyName
class Command(BaseCommand):
help = 'insert data to company_names table'
def add_arguments(self, parser):
parser.add_argument('name', type=str)
parser.add_argument('c_id_id', type=int)
parser.add_argument('language_id', type=int)
def handle(self, *args, **options):
name = options['name']
c_id = options['c_id_id']
language_id = options['language_id']
company_name = CompanyName(name=name, c_id=c_id, language_id=language_id)
company_name.save()
self.stdout.write('Successfully make company name "%s"' % name)
ํด๋์ค ์ด๋ฆ์ Command๋ก ๋ง๋ค์ด์ฃผ๊ณ BaseCommand๋ฅผ ๋ฐ์์จ๋ค. ๋ฐ help ๋ณ์์๋ ๋ง๋ค command์ ์ฉ๋๋ฅผ ์ค๋ช ํ๋ฉด ๋๋ค. (์ด๋ฆ์ ๊ผญ Command์ฌ์ผ ํ๋ค.)
add_arguments ํจ์์ parser์ ๋ฐ์ ํจ์ ์๋ parser.add_argument(๋ฐ์ ์ธ์, ํ์
)
์ ์ ๋๋ค.
handle์ด๋ผ๋ ํจ์์ add_arguments์์ ๋ฐ์ ์ธ์๋ฅผ ๋ณ์์ ๋ฃ์ด์ค๋ค. ๋๋ name๊ณผ c_id(ํ์ฌ id), language_id๋ฅผ ๋ฐ์๋ค.
๋ฐ์ ์ธ์๋ฅผ model์ ์ ์ฅํ๊ณ save ํด์ค๋ค.
python manage.py insert_data_to_db ์ด๋ฆ ํ์ฌid ์ธ์ดid
๋ฅผ manage.py๊ฐ ์๋ ๊ฒฝ๋ก์์ ์คํํ๋ฉด
Successfully make company name ์ด๋ฆ
data๊ฐ db์ ์ ๋ค์ด๊ฐ ๊ฒ์ ํ์ธํ ์ ์๋ค.
'Python > ๐ฆ Django' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] DRF ์๋ ํ๋ฆ (0) | 2023.11.23 |
---|---|
[Django] ์ฝ๋ฉ ์คํ์ผ (0) | 2023.09.04 |
[Django] JWT๋ก ๋ก๊ทธ์์์ ๊ตฌํํด๋ณด์ (0) | 2023.09.04 |
[Django] QuerySet ์ดํดํ๊ธฐ - Lazy Loading, Caching, Eager Loading (0) | 2023.09.04 |
[Django] Django ORM์ด๋ ๋ฌด์์ผ๊น? (0) | 2021.10.30 |