본문 바로가기

파이썬 프로그래밍/Django기초

[Django] 장고. model 모델클래스 나눠 관리하기

model클래스를 나누기 전에 Data base의 외부키(foreign key)에 대한 개념이 잡혀있으면 이해하기 쉽습니다.




1. model클래스를 나눠야하는 이유

하나의 DB 테이블이 있습니다.

이렇게 테이블을 만들다보면 후보가 늘어날때마다 테이블을 계속 수정해 줘야하는 번거로움이 생길것입니다.

그래서 model클래스를 나눠 관리하기 쉽고 효율적인 테이블을 만들게 됩니다.




위에 있는 테이블을 2개로 나눴습니다.

어린이의 홍보기간 테이블과 어린이의 득표수 테이블로 나눴습니다.

두개의 테이블을 엮기 위해 공통적인 컬럼이 있는데 이것은 번호입니다. 이것을 외부키(Foreign key)라고 합니다.



2. 어린이의 홍보기간 클래스 만들기(Poll)

1
2
3
4
class Poll(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()
    area = models.CharField(max_length=15)
cs

3. 어린이의 득표수 클래스 만들기(Choice)

1
2
3
4
5
class Choice(models.Model):
    poll = models.Foreignkey(Poll)#어느투표에 대한 결과인지 알아야함
                                   #그래서 Poll 클래스에서 사용하고 있기 떄문에 불러오겠음
    Candidate = models.Foreignkey(Candidate)#이미 있는 Candidate를 사용하기 위해 외부키지정
    votes = models.IntegerField(default=0)#득표수 받지 않았다면 0으로 하기 위해
cs

추가해줍니다.



4. 데이터를 admin이 추가하기 위해 admin.py수정

1
2
3
4
5
6
7
8
from django.contrib import admin
 
from . models import Candidate, Poll
# Register your models here.
 
 
admin.site.register(Candidate)
admin.site.register(Poll)
cs
이렇게 추가해줍니다.
이제 admin에서 데이터를 추가해 줄 수 있습니다.



5. DB에서 받아드리기 위한 준비

(makemigrations, migrate) 
makemigrations

마이그레이션으로 데이터베이스의 틀을 만들어줍니다.


확인해보면 0002_라고 파일이 생기며 틀이 만들어지는것을 확인할 수 있습니다.



자세히 보게되면 만들어줬던 Poll, choice도 잘 보입니다.



Migrate

마이그레이션이 끝났으니 디비에 반영하기 위해 Migrate를 해줍니다.



6. 확인하기

설정이 끝났다면 서버를 열어줍니다.




admin서버에 들어가보면 Polls라고 잘 나와있네요




추가한 데이터가 없으므로 직접 추가해줍니다.

클릭해줍니다.




값을 알맞게 입력하고 SAVE를 클릭합니다.




SAVE해주면 추가된 것을 확인하실 수 있습니다.




강의출처: https://tryhelloworld.co.kr/