관리 메뉴

Storage Gonie

22. (app2) Django Model 생성(foreign key로 연결된 2개의 모델 만들기) 본문

웹개발/Django 웹서비스 개발(인프런)

22. (app2) Django Model 생성(foreign key로 연결된 2개의 모델 만들기)

Storage Gonie 2019. 2. 17. 17:11
반응형

주제 : foreign key로 연결된 2개의 모델 만들기


ORM이란

- Object Relational Mapping의 줄임말.

- 오브젝트와 데이터베이스를 연결하여 데이터 베이스의 CRUD를 쉽게 할 수 있게 함


1. model.py에서 아래의 코드를 입력하여 Question, Choice 모델을 만들어준다.

- primary key 는 장고가 자동으로 설정해주므로 따로 설정할 필요가 없다. 물론 수동으로 관리할 수 있지만 보통은 그럴 필요가 없다.

- 아래와 같이 외래키를 설정해줫을 때 일어나는 상황설명 : Question에서 짜장?짬뽕? 라인을 지워버리는 경우 Choice에서 fk가 2인 짜장, 짬뽐, 탕슉이 모두 같이 날아간다.

from django.db import models

# Create your models here.
class Question(models.Model):
question_text = models.CharField(max_length = 200)
pub_date = models.DateTimeField('date published') # ( ) 에 들어간 텍스트는 그냥 주석이다.


class Choice(models.Model):
# Foeign Key 설정, on_delete 설정 : 참조한 키가 삭제되면 그 키와 관련된 데이터를 같이 삭제해주세요
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length = 200)
votes = models.IntegerField(default = 0)


2. 콘솔에서 다음을 실행하여 모델을 생성하는 쿼리문을 생성한다.

- "python manage.py makemigrations"

- 앱폴더 아래에 003_~~~.py 파일이 생성되었고, Choice, Question 모델이 생성되었다는 문구를 확인할 수 있음.

- 만약 변경된 내용이 없다고 뜨는 경우 진짜 변경된 코드가 없어서 그럴 수 있지만 그 경우가 아닌경우 settings.py에 앱을 등록했는지 확인해야함.




3. 생성되는 쿼리문(SQL문) 확인방법

- "python manage.py sqlmigrate 앱이름 숫자"

    ex) 숫자에는 생성되었다고 하는 파일의 맨 앞의 숫자를 입력해주면 된다.

          위의 경우 python manage.py sqlmigrate polls 0003



4. 실제 반영

- "python manage.py migrate"

반응형
Comments