django 03. 첫번째 장고앱 3 - MODEL 클래스 만들기, admin site 에 Model 등록
28 Feb 2017 | python 파이썬 Django modeldjango 03. 첫번째 장고앱 3 - MODEL 클래스 만들기, admin site 에 Model 등록
MODEL 클래스 만들기
장고는 모델과 데이터베이스를 연결해서 데이터베이스에 영구적으로 데이터를 저장하게 되는데 이를 ORM ( Object – Relational Mapping)
이라고 합니다.
- Model은 M(model)T(template)V(view)의 M
- DB에 데이터를 저장하거나 불러오기 위해서 모델을 사용한다.
- 모델은 클래스로 만들어 준다.
- models.py 작성 후, 장고에게 모델을 만들었다는 걸 알려준다.
$ python manage.py makemigrations
$ python manage.py migrate
- models.py 내에 GuessNumbers 클래스 작성 예시
from django.db import models
from djang.utils import timezone
import random
# Create your models here.
class GuessNumbers(models.Model): #슈퍼클래스 models의 하위클래스 Model을 상속받는다.
# 필요한 데이터 정의
name = models.CharField(max_length = 24)
lottos = models.CharField(max_length = 255, default = '[1, 2, 3, 4, 5, 6]')
text = models.CharField(max_length = 255)
num_lotto = models.IntegerField(defaul = 5)
update_date = models.DateTimeField()
# 메소드 정의
def generate(self):
self.lottos = ""
origin = list(range(1,46)) #[1, 2, 3.....44, 45]
for _ in range(0, self.num_lotto): # self.num_lotto 수만큼 반복해서 아래를 수행한다.
random.shuffle(origin) # origin 리스트 순서를 섞는다.
guess = origin[:6] #index번호 0부터 5 까지를 뽑아낸다.
guess.sort()
self.lottos += str(guess) + '\n'
self.update_date = timezone.now()
self.save() # 오브젝트를 db에 저장
admin site 에 Model 등록하기
어드민을 이용하여 model에 있는 데이터 확인하기
- http://127.0.0.1:8000/admin/ 접속
- 로그인을 위한 슈퍼유저(superuser) 생성
$ python manage.py createsuperuser
admin.py
에 GuessNumbers 모델 클래스 등록- 모델 클래스 등록 후, 어드민 사이트에 재접속하면 해당 모델 클래스 확인 가능
from mylotto.models import GuessNumbers
admin.site.register(GuessNumbers)
- 어드민 사이트에서 데이터 추가
- 해당 모델 클래스(GuessNumbers)에
__str__
메소드를 추가하여 어드민 내 표시방법 변경
def __str__(self):
return '%s - %s' % (self.name, self.text)