인프런 커뮤니티 질문&답변

seonjoo님의 프로필 이미지
seonjoo

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

Articleapp 구현

db 관련 문의입니다~

작성

·

188

0

안녕하세요~ db 관련 질문이 있어 글 남깁니다!

class Article(models.Model):
    writer = models.ForeignKey(Useron_delete=models.SET_NULLrelated_name='article'null=True)
    title = models.CharField(max_length=200null=True)
    content = models.TextField(null=True)
    image = models.ImageField(upload_to='article/'null=True)
    created_at = models.DateField(auto_now_add=Truenull=True)

위와 같이 models.py를 정의를 해줬구요, 

그리고 

makemigrations, migrate 명령어를 통해 적용 했습니다.

적용 후에 보니까


from django.conf import settings
from django.db import migrationsmodels
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Article',
            fields=[
                ('id'models.BigAutoField(auto_created=Trueprimary_key=Trueserialize=Falseverbose_name='ID')),
                ('writer'models.ForeignKey(null=Trueon_delete=django.db.models.deletion.SET_NULLrelated_name='article'to=settings.AUTH_USER_MODEL)),
            ],
        ),
    ]

이렇게 파일이 생성되었더라구요, 

근데 article 을 create 해보니까 title 컬럼이 없다는 에러가 나왔구요,

그래서 다시 makemigrations, migrate 명령어를 통해 적용 했습니다.

그래서 아래와 같은 파일이 하나 더 생겼습니다.

from django.db import migrationsmodels


class Migration(migrations.Migration):

    dependencies = [
        ('articleapp''0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='article',
            name='content',
            field=models.TextField(null=True),
        ),
        migrations.AddField(
            model_name='article',
            name='created_at',
            field=models.DateField(auto_now_add=Truenull=True),
        ),
        migrations.AddField(
            model_name='article',
            name='image',
            field=models.ImageField(null=Trueupload_to='article/'),
        ),
        migrations.AddField(
            model_name='article',
            name='title',
            field=models.CharField(max_length=200null=True),
        ),
    ]

이렇게 되니까 create 가 잘 적용되더라구요....

음...이렇게 진행을 해도 문제가 없는 것인지, 왜 문제가 발생한 것인지 궁금하기도 합니다....

답변 2

0

seonjoo님의 프로필 이미지
seonjoo
질문자

아하.. 제가 중간에 실수가 있었나보네요...

답변 감사드립니다!!

0

Hyong Sok Park님의 프로필 이미지
Hyong Sok Park
지식공유자

안녕하세요
질문 확인했습니다.

title 컬럼이 없는 상태에서 makemigrations 를 하신 이후,
migrate 를 진행해주신 것 같습니다.

정확히 모든 값이 적혀있었는데 makemigrations 명령어를 통해
특정 column이 빠지는 일은 아무래도 없습니다.

makemigrations 는 결국 models.py 에 작성되는 내용의 변화를 추적하는 명령인데,
해당 명령을 통해 첫번쨰 파일에 title 이 없었다면,
그 시점에는 title 이라는 컬럼이 없었을 것으로 추정됩니다.


아무튼 이와 별개로 질문자님 상태에서 강좌를 진행하는데에는 무리가 없을거에요.
migration 명령을 두번 했다 뿐이지 db 에 정상적으로 반영이 된 것은 맞기 때문에,
진행에 걱정은 안하셔도 될것 같습니다.

부족한 답변이지만 도움이 되셨길 바랍니다.
감사합니다!

seonjoo님의 프로필 이미지
seonjoo

작성한 질문수

질문하기