Django_BE

[Django]def __str__(self)/TimeStampedModel

잠이와요 2023. 5. 23. 18:06

def __str__(self):

model에서 안에 다음과 같은 코드가 있었다

 def __str__(self):

언더바 2개로 정의된 함수들은 메소드이다

__str__함수는 객체를 문자열로 표현한 것을 반환해주는 함수이다

self는 객체 내붕서 정의된 것들을 지칭하기 위해서 사용


TimeStampedModel

model에 아래와 같은 코드가 있었다

class Place(core_models.TimeStampedModel):

여기서 core_models.TimeStampedModel이 뭔지 궁금했다.

장고에서 데이터 설정 시간, 업데이트 시간을 기록하기 위해서 여러 필드를 설정해주는 경우가 있는데 이를 TimeStampedModel에 한번만 필드를 지정해놓고 상속을 받아서 사용하는 것이 좋아서

 

core/models.py에 보면

from django.db import models

# Create your models here.


class TimeStampedModel(models.Model):
    """Time stamped Model"""

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True #admin에서 안보이게

이런식으로 TimeStampedModel이 정해져있는게 보였다

 

  • auto_now_add=True: 데이터가 생성되어 처음 저장 될때 시간이 기록된다는 의미
  • auto_now=True: 데이터가 수정될때마다 시간이 업데이트 된다는 의미
  • class Meta: abstract=True: 해당 클래스를 추상화 기초 클래스로 선언한다는 의미로 장고에서 마이그레이션을 실행할 때 timestanpedmodel에 대한 테이블이 생성되지 않는다