Models


06_Model methods

모델에 method를 직접 만들어 보겠습니다. 직접 만든 method(=custom metod)는 직접 만드는 "행 수준"(row-level)의 기능을 개체(objects)에 추가하는데 사용합니다.

매니저 method가 "table-wide"한 것들을 의도하는 반면, 모델 method는 개별적인 모델 instance에서 작동합니다.

*method는 모델 안에서 작동하는 함수입니다.


이것은 한 곳(=특정 모델)에서 경제적인 로직을 유지하는 가치있는 기술입니다.

예를 들어, 아래의 모델에 있는 몇가지 custom method를 살펴봅시다.

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.date91945, 8, 1):
            return "Pre-boomer"
        elif self.birth_date < datetime.date(1965, 1, 1):
            return "Baby boomer"
        else:
            return "Post-boomer"  

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

위 예제의 마지막 method는 property입니다.

model instance reference 문서에 methods automatically given to each model의 완벽한 목록이 있습니다. 우리는 그 중 많은 것을 덮어 쓸 수 있습니다. 덮어쓰기를 원하는 경우 overriding predefined model methods를 참고하세요.

그리고 거의 대부분의 경우, 덮어쓰게 되는 내용들이 있습니다.

__str__( )
모든 개체의 "representation" 유니코드를 화면에 돌려주는 파이썬의 "magic method"입니다. 문자열이 그대로 나타나도록 강제되는, 그리고 표현되는 모델 객체일 때에도 장고나 파이썬이 사용될 수 있는 이유입니다. 대화형 콘솔이나 관리자 사이트에서 개체(object)를 화면에 나타나게 할때 가장 큰 효과를 느낄 수 있습니다.

우리는 거의 언제나 이 method를 사용하게 됩니다.


__unicode__( ) (python2)
(내용 생략)



get_absolute_url( )
이 method는 장고에게 어떻게 object로 가는 URL을 계산하는지 알려줍니다. 장고는 이 method를 장고의 관리자 인터페이스에 사용합니다. 그리고 장고가 어떤 object의 URL을 파악할 필요가 있을 때 사용합니다.

Any object that has a URL that uniquely identifies it should define this method.

results matching ""

    No results matching ""