장고 추상 모델 클래스 생성과 상속 방법

2022. 1. 21. 16:25·Django

장고 모델에서 추상 모델 클래스(Abstract 속성)을 사용하면, 다른 클래스 모델에서 이를 상속받아 활용할 수 있습니다. 추상 모델 클래스는 자체적인 데이터베이스 테이블을 생성하지 않으며, 상속받는 클래스의 테이블에 함께 추가됩니다.

추상 모델 클래스 생성

추상 모델 클래스는 데이터베이스의 생성 시각이나 수정 시각과 같이 여러 테이블에서 공통적으로 사용되는 내용을 상속시키고자 할 때 유용할 수 있습니다. 다음과 같이 Base 모델을 만들어 추상 모델 클래스로 지정할 수 있습니다.

from django.db import models

class Base(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

추상 모델 클래스 사용

아래는 게시글 포스팅을 위해 생성한 모델인데요. 위의 Base 모델과 동일한 생성 및 업데이트 시간 테이블이 추가되어 있는 것을 볼 수 있습니다.

class Posting(models.Model):
    user       = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='posting_user')
    image_url  = models.URLField()
    content    = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        db_table = 'postings'

이 부분을 추상화 모델을 사용하면 다음과 같이 간략하게 표현할 수 있습니다.

class Posting(Base):
    user       = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='posting_user')
    image_url  = models.URLField()
    content    = models.TextField()

    class Meta:
        db_table = 'postings'

이렇게 하면 Base 모델 클래스를 상속 받게 되며, Posting 테이블에는 자동으로 생성 및 업데이트 시간 추가 테이블이 생성됩니다.

반응형

'Django' 카테고리의 다른 글

장고, 파이썬 csv 파일 처리 방법  (0) 2022.02.01
장고 프론트엔드와 통신 방법: HTTP POST, GET request 처리하기  (0) 2022.01.28
장고 암호화 인증 인가 처리: bcrypt, JWT 사용 방법  (0) 2022.01.19
장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법  (0) 2022.01.16
장고 데이터 모델 작성과 CRUD 테스트 방법  (0) 2022.01.11
'Django' 카테고리의 다른 글
  • 장고, 파이썬 csv 파일 처리 방법
  • 장고 프론트엔드와 통신 방법: HTTP POST, GET request 처리하기
  • 장고 암호화 인증 인가 처리: bcrypt, JWT 사용 방법
  • 장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법
휘 Hwi
휘 Hwi
개발자 성장 로그
  • 휘 Hwi
    개발자 로그: 변화를 위한 공간
    휘 Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 (61)
      • 101 (1)
      • Web | Internet (4)
      • HTML | CSS (4)
      • Python (9)
      • Django (20)
      • Javascript (0)
      • Node.js (0)
      • React (0)
      • React Native (0)
      • Database (1)
      • Git (1)
      • Terminal | Vim (1)
      • Auth | Security (4)
      • AWS (0)
      • Docker (0)
      • Kubernetest (1)
      • Deployment (1)
      • Project (2)
      • TIL (12)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    깃 에러 해결
    요소 상대 크기
    장고 URL
    깃
    깃 ssh
    css
    HTTP POST 요청
    탭내빙
    target="_blank"
    정규 표현식
    HTTP
    장고 프로젝트
    요소 절대 크기
    html
    JWT
    프로젝트 회고
    깃 퍼블릭 키 등록
    TIL
    파이썬
    새 탭에서 열기
    깃 오류
    장고
    JWT 인코딩
    장고 Views
    배포
    요소 크기 설정
    함수
    HTTP GET 요청
    JWT 디코딩
    파라미터
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
휘 Hwi
장고 추상 모델 클래스 생성과 상속 방법
상단으로

티스토리툴바