Django decorator | @property

Jihun Kim·2022년 1월 2일
1

Django | decorator

목록 보기
2/4
post-thumbnail

@property

@property 데코레이터는 메소드를 마치 필드인 것처럼 취급할 수 있도록 만들어 준다.

아래와 같은 예시가 있다고 하자.

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    birth_date = models.DateField()

    def baby_boomer_status(self):
        "Returns the person's baby-boomer status."
        import datetime
        if self.birth_date < datetime.date(1945, 8, 1):
            return "Pre-boomer"
        elif self.birth_date < datetime.date(1965, 1, 1):
            return "Baby boomer"
        else:
            return "Post-boomer"

    @property
    def full_name(self):
        "Returns the person's full name."
        return '%s %s' % (self.first_name, self.last_name)

여기서 full_name은 함수로 정의되어 있지만 @property 데코레이터가 사용되었다. 따라서, views.py에서 full_name을 불러올 때는 Person.full_name()이 아니라 Person.full_name의 형식으로 불러올 수 있다.

이러한 특징 덕분에 모델 내에 지정된 필드에 연산을 실행해 결과를 확인하고 싶을 때 편하게 사용할 수 있다.



참고
1) 장고 docs
https://docs.djangoproject.com/en/4.0/topics/db/models/

2) 블로그
https://hwan-hobby.tistory.com/148

profile
쿄쿄

0개의 댓글