728x90

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 파일을 잡아뒀던 것 처럼 이렇게 잡아줘야 함!

 

 

+ Recent posts