1. Django 모델 (Model)
Django에서 Model은 데이타 서비스를 제공하는 Layer이다. Django의 Model은 각 Django App안에 기본적으로 생성되는 models.py 모듈 안에 정의하게 된다. models.py 모듈 안에 하나 이상의 모델 클래스를 정의할 수 있으며, 하나의 모델 클래스는 데이타베이스에서 하나의 테이블에 해당된다.
from django.db import models
from django.urls import reverse
# 분류
class category(models.Model):
name = models.CharField(max_length=50, help_text='게임의 장르를 입력하세요.')
def __str__(self): #객체를 문자열로 표현.
return self.name
# 게임 글(제목, 작성일, 대표 이미지, 내용, 분류)
class game (models.Model):
name = models.CharField(max_length=100)
image = models.ImageField(blank=True) #사진 올리지않아도 허용
context = models.TextField()
createDate = models.DateTimeField(auto_now_add=True)
updateDate = models.DateTimeField(auto_now_add=True)
#하나의 글을 여러가지 분류에 해당 가능. 다:다
category = models.ManyToManyField(category, help_text="어떤 장르의 게임인가요?")
def __str__(self):
return self.name
# 1번글의 경우 -> single/1
def get_absolute_url(self):
return reverse('single', args=[str(self.id)])
나는 게임의 종류를 소개하는 DB를 만들거라 클래스 네임과 객체 네임을 저렇게 지었다.
이렇게 설계가 끝났으면, 확인하기 위해 앱 폴더의 admin.py 를 가서 등록을 해줘야 한다!
from django.contrib import admin
from blog.models import game, category
# Register your models here.
admin.site.register(game)
admin.site.register(category)
경로를 설정해 해당 클래스를 import 해오고,
admin 사이트에 등록 해주기.
그 후 터미널에서 makemigration, migrate 통해 변경사항 저장 해주기.
내가 만든 클래스 두 개 잘 확인완료!
1. 카테고리 클래스에 카테고리들 넣어주기.
각 게임의 장르를 넣어주면
저 4개의 카테고리가 뜨는 것을 확인할 수 있는데, 이것은 모델 파일에서 클래스 밑에 def __str__(self.~): 이 함수로 나타낸 것.
즉, 데이터가 자기 자신을 name으로 표현할 것이라고 설정한 것!
2. 게임 글 쓰기
name : CharField
image: ImageField
context : TextField
catecory : ManyToMany (그래서 하나 이상을 선택하려면 ~ ) 이 멘트가 뜨는 것.
단, 이미지 파일은 설정 파일에 static 파일을 잡아뒀던 것 처럼 이렇게 잡아줘야 함!