다음과 같은 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

+ Recent posts