기존까지는 django를 사용하여 프로젝트를 진행할 때, models.py 파일을 수정하고, python mange.py makemigrations 를 통해 자동으로 생성된 파일만으로 디비 마이그레이션을 진행했었다.
레일즈로는 직접 마이그레이션 파일을 작성하고, 여러 잡들도 만들었었는데, 유독 장고로는 이런 일을 할일이 없었던 것 같다가
해당 작업을 하게 되어 글을 작성해본다.
정말 심플하다.
1. 아래 명령어로 마이그레이션 파일을 만들고싶은 앱 이름을 넣고 빈 마이그레이션 파일을 만들어준다.
python manage.py makemigrations --empty [마이그레이션 파일을 만들고 싶은 app 이름]
여러분의 코드에서의 dependencies는 아래 코드 상에서의 dependency와 당연히 다를 것이다. ㅎㅎ
# Generated by Django 3.1.9 on 2021-07-03 08:56
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('boards', '0011_auto_20210703_1752'),
]
operations = [
]
2. 만들어진 마이그레이션 파일 상에서 원하는 마이그레이션 동작을 추가한다.
아래 코드는 boards 앱에 있는 Board 모델 레코드의 type이 없는 경우 type을 모두 'board'라는 문자열로 치환하는 마이그레이션 작업 코드이다.
# Generated by Django 3.1.9 on 2021-07-03 08:56
from django.db import migrations
class Migration(migrations.Migration):
def set_default_board_type(apps, schema_editor):
Board = apps.get_model("boards", "Board")
for board in Board.objects.all():
if not board.type:
board.type = 'board'
board.save()
dependencies = [
('boards', '0011_auto_20210703_1752'),
]
operations = [
migrations.RunPython(set_default_board_type),
]
이제 열심히 디비 마이그레이션을 하자.
끝
'WEB > django' 카테고리의 다른 글
[Django] Single Table Inheritance (0) | 2021.07.03 |
---|---|
singun11's Django Tutorial 목차 (0) | 2020.10.26 |