다음과 같은 Movie 클래스가 있다.
#models
class Movie(models.Model):
title = models.CharField(db_index=True, max_length=200, default='')
director = models.CharField(db_index=True, max_length=200, default='')
release_date = models.DateTimeField()
total_view = models.IntegerField(default=0)
daily_view = models.IntegerField(default=0)
poster_path = models.TextField(default='')
@property
def get_title(self):
"Returns the movie's title."
return self.title
아래와 같이 Movie의 정보를 가져오는 API를 작성하려고 할 때, getter 함수를 멤버 변수처럼 사용하도록 지정해주는 것이 property의 역할이다. 만약 @property로 선언되어 있지 않았다면, movie.get_title() 과 같이 사용해야 했을 것이다.
#views
...
result = dict()
movie = Movie.objects.get(id=movie_id)
result['title'] = movie.get_title
...
이를 활용하여 해당 API를 요청하는 시점과 영화의 개봉일을 비교하여 return 값에 추가할 수도 있다.
...
@property
def get_title(self):
"Returns the movie's title."
if self.release_date < timezone.now():
return "(개봉)" + self.title
else:
return "(미개봉)" + self.title
API를 요청하면 다음과 같이 값을 얻을 수 있다.
{
"title": "(개봉)캐치 미 이프 유 캔"
...
}
References
https://stackoverflow.com/questions/58558989/what-does-djangos-property-do
'Django' 카테고리의 다른 글
Django - 동적 쿼리 (0) | 2022.03.05 |
---|---|
Django - HTTP Response Redirection (0) | 2022.02.02 |
Django - transaction atomic (0) | 2021.12.09 |
Django - Crontab (Mac OS) (0) | 2021.11.18 |
Django - paging (0) | 2021.10.18 |