연습 - 모델 만들기
모델을 만들어 필수 필드와 데이터의 동작을 정의할 수 있습니다. dog_shelters 애플리케이션에 필요한 모델을 추가해 보겠습니다.
모델 만들기
프로세스의 첫 번째 단계는 모델을 추가하는 것입니다. Django는 모델에 사용할 수 있는 models.py라는 빈 파일을 제공합니다.
Visual Studio Code 내에서 dog_shelters/models.py 파일을 엽니다.
주석
Create your models here
아래에 다음 코드를 입력하여 모델을 포함하는 두 개의 Python 클래스를 추가합니다.# Create your models here class Shelter(models.Model): name = models.CharField(max_length=200) location = models.CharField(max_length=200) def __str__(self): return self.name class Dog(models.Model): shelter = models.ForeignKey(Shelter, on_delete=models.PROTECT) name = models.CharField(max_length=200) description = models.TextField() intake_date = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name
이제 이 모델을 추가하여 보호소 및 유기견에 관한 표현을 만들었습니다. Dog
와 Shelter
사이의 관계에 유의하세요. Shelter
클래스는 많은 Dog
값을 저장할 수 있습니다. intake_date
에 관한 auto_now_add
값도 유의하세요. 사용자 지정 날짜를 제공하지 않으면 필드가 현재 날짜로 자동 설정됩니다.
Dog
클래스에서 ForeignKey
를 사용하고 있습니다. 이 부분은 Django에게 Dog
와 Shelter
사이의 관계가 있음을 알려줍니다. 이 관계를 정의하여 우리는 Django에게 모든 유기견이 하나의 보호소와 관계가 있다고 지시합니다.
모델 등록
모든 애플리케이션을 Django의 프로젝트에 등록해야 합니다. 직관적이지 않은 것처럼 보이지만 프로젝트 내에 애플리케이션 폴더가 있다고 해서 자동으로 로드되는 것은 아닙니다. INSTALLED_APPS
목록에 추가하여 등록해야 합니다.
dog_shelters 폴더에서 구성 클래스 이름을 찾습니다. 이 클래스 이름을 찾으려면 dog_shelters/apps.py 파일로 이동하여 다음 코드에서 클래스 이름이
DogSheltersConfig
인지 확인합니다.class DogSheltersConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'dog_shelters'
프로젝트에서 settings.py를 엽니다.
주석
#[TODO] - Add the app to the list of INSTALLED_APPS
아래에 클래스 이름의 전체 경로를 추가합니다.#[TODO] - Add the app to the list of INSTALLED_APPS 'dog_shelters.apps.DogSheltersConfig',
이제
INSTALLED_APPS
목록에 다음 항목이 포함됩니다.INSTALLED_APPS = [ #[TODO] - Add the app to the list of INSTALLED_APPS 'dog_shelters.apps.DogSheltersConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
INSTALLED_APPS
목록에 줄을 추가하면 Django는 프로젝트를 실행할 때 이 앱을 포함해야함을 알립니다.
요약
이제 Django 애플리케이션을 위한 두 개의 모델을 만들었습니다. 모델을 만드는 것은 모든 Django 프로젝트의 기반이 됩니다.