일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- c++
- getline
- 프레임워크와 라이브러리의 차이
- 이분그래프
- 알고리즘 공부방법
- vscode
- Django란
- Django의 편의성
- 장고란
- 구조체와 클래스의 공통점 및 차이점
- double ended queue
- scanf
- Django Nodejs 차이점
- k-eta
- string 함수
- UI한글변경
- 2557
- 엑셀
- EOF
- 매크로
- 입출력 패턴
- iOS14
- 연결요소
- 백준
- 시간복잡도
- string 메소드
- 입/출력
- correlation coefficient
- 표준 입출력
- 자료구조
Archives
- Today
- Total
Storage Gonie
Django (20*) images앱의 Image, Comment 모델 생성(Abstract base class 이용) 본문
웹개발/인스타 클론 (1) Django
Django (20*) images앱의 Image, Comment 모델 생성(Abstract base class 이용)
Storage Gonie 2019. 6. 27. 01:58반응형
# Abstract base class 란 무엇인가
- Abstract base class 는 모델이기는 하지만, 데이터베이스 테이블을 생성하지 않으며,
공통된 field를 자식한테 물려주는 목적으로 사용된다. 즉, 중복 코딩을 제거하기 위해 사용함.
- django.db.models.Model 을 상속받아 만들어지는 모델이며(단, 테이블 생성X),
다른 클래스들이 공통적으로 가지게할 field를 정의한 뒤,
Abstract base class 임을 구분하기 위해 내부에 Meta class를 정의하고 거기에 abstract = True를 넣어줘야 한다.
(Meta 클래스에는 부가적인 설명 정보가 들어간다. 여기에 적는 것은 field가 아님)
- 이전 장에서 User 모델을 만들 때 사용된 AbstractUser도 바로 이 abstract base class의 일종이다.
# Abstract base class 를 이용해 Image, Comment 클래스 정의하기
- User 모델에 필드를 추가할 때 null=True 속성을 줬었는데, 여기서는 이게 필요없다.
null=True 속성을 이전에 사용했던 이유는 User 모델에 필드를 추가하기 전에 테이블에 데이터가 존재해서 그런거였는데,
여기서는 이제 처음 만들어질 테이블이기 때문에 데이터가 없어서 필요없는 속성이다.
from django.db import models
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True) # 모델이 생성된 날짜, 테이블이 생성될 때 현재 시간이 저장되도록 하는 속성.
updated_at = models.DateTimeField(auto_now=True) # 모델이 업데이트 된 날, 테이블이 업데이트 되었을 때 현재 시간이 저장되도록 하는 속성.
class Meta:
abstract = True # abstract base class 임을 알림
class Image(TimeStampedModel):
file = models.ImageField() # 이미지파일
location = models.CharField(max_length=140) # 촬영한 위치
caption = models.TextField() # 이미지에 대한 설명
class Comment(TimeStampedModel):
message = models.TextField() # 댓글 텍스트
# 정의한 모델 DB에 반영시키기
python manage.py runserver # 코드상에 오류가 없는지 실행을 통해 먼저 확인
python manage.py makemigrations
python manage.py migrate
반응형
'웹개발 > 인스타 클론 (1) Django' 카테고리의 다른 글
Django (22*) Like 모델 추가, Image, Comment 모델에 ForeignKey 필드추가 (0) | 2019.06.28 |
---|---|
Django (21) Model Relationships(one to many, many to many 관계) (1) | 2019.06.28 |
Django (19*) users앱의 User 모델 설명 및 확장 (0) | 2019.06.26 |
Django (18*) Admin 패널 로그인을 위한 super user 생성 (0) | 2019.06.25 |
Django (17*) Model 수정 반영을 위한 Migratiton (0) | 2019.06.25 |
Comments