@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/