Model μ½”λ”© 🧠

jurinΒ·2021λ…„ 6μ›” 22일
0

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 - Model μ½”λ”©

>notepad models.py                // ν…Œμ΄λΈ” μ •μ˜
>notepad admins.py                // μ •μ˜λœ ν…Œμ΄λΈ”μ΄ Admin 화면에 보이게 함
>python manage.py makemigrations  // DB에 변경이 ν•„μš”ν•œ 사항을 μΆ”μΆœ
>python manage.py migrate         // DB 변경사항 반영
>python manage.py runserver       // ν˜„μž¬κΉŒμ§€ μž‘μ—…μ„ 개발용 μ›Ή μ„œλ²„λ‘œ 확인

ν…Œμ΄λΈ” μ •μ˜

polls μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ Questionκ³Ό Choice 두 개의 ν…Œμ΄λΈ”μ΄ ν•„μš”ν•˜λ‹€. ν…Œμ΄λΈ”μ€ models.py νŒŒμΌμ— μ •μ˜ν•œλ‹€.

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')

    def __str__(self):
        return self.question_text

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)
    
    def __str__(self):
        return self.choice_text
    
    
  • PKλŠ” ν΄λž˜μŠ€μ— 지정해주지 μ•Šμ•„λ„ μž₯κ³ λŠ” 항상 PK에 λŒ€ν•œ 속성을 Not Null 및 Autoincrement둜 이름은 id둜 ν•΄μ„œ μžλ™μœΌλ‘œ λ§Œλ“€μ–΄ μ€€λ‹€.
  • FKλŠ” 항상 λ‹€λ₯Έ ν…Œμ΄λΈ”μ˜ PK에 μ—°κ²°λ˜λ―€λ‘œ, Question 클래슀의 id λ³€μˆ˜κΉŒμ§€ 지정할 ν•„μš” 없이 Question 클래슀만 μ§€μ •ν•˜λ©΄ λœλ‹€.
  • __str__() λ©”μ†Œλ“œλŠ” 객체λ₯Ό λ¬Έμžμ—΄λ‘œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ‘œ Admin μ‚¬μ΄νŠΈλ‚˜ μž₯κ³  μ‰˜ λ“±μ—μ„œ ν…Œμ΄λΈ”λͺ…을 보여쀄 λ•Œ, μ΄λ•Œ __str__() λ©”μ†Œλ“œλ₯Ό μ •μ˜ν•˜μ§€ μ•ŠμœΌλ©΄ ν…Œμ΄λΈ”λͺ…이 μ œλŒ€λ‘œ ν‘œμ‹œλ˜μ§€ μ•ŠλŠ”λ‹€.

Admin μ‚¬μ΄νŠΈμ— ν…Œμ΄λΈ” 반영

models.pyμ—μ„œ μ •μ˜ν•œ ν…Œμ΄λΈ”λ„ Admin μ‚¬μ΄νŠΈμ— 보이도둝 admin.py νŒŒμΌμ— 등둝해쀀닀.

from django.contrib import admin
from ch3.polls.models import Question, Choice

admin.site.register(Question)
admin.site.register(Choice)

models.py λͺ¨λ“ˆμ—μ„œ μ •μ˜ν•œ Question, Choice 클래슀λ₯Ό importν•˜κ³  admin.site.register() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μž„ν¬νŠΈν•œ 클래슀λ₯Ό Admin μ‚¬μ΄νŠΈμ— 등둝해쀀닀.

이와같이 ν…Œμ΄λΈ”μ„ μƒˆλ‘œ λ§Œλ“€ λ•ŒλŠ” models.py와 admin.py 두 개의 νŒŒμΌμ„ 함꼐 μˆ˜μ •ν•΄μ•Ό ν•œλ‹€.

DB 변경사항 반영

ν…Œμ΄λΈ”μ˜ μ‹ κ·œ 생성, ν…Œμ΄λΈ”μ˜ μ •μ˜ λ³€κ²½ λ“± DB에 변경이 ν•„μš”ν•œ 사항이 생기면 λ°˜μ˜ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

>python manage.py makemigrations  // DB에 변경이 ν•„μš”ν•œ 사항을 μΆ”μΆœ
>python manage.py migrate         // DB 변경사항 반영
>python manage.py runserver  




좜처: Django둜 λ°°μš°λŠ” 파이썬 μ›Ή ν”„λ‘œκ·Έλž˜λ°(기초) - κΉ€μ„ν›ˆλ‹˜

profile
anaooauc1236@naver.com

0개의 λŒ“κΈ€