[Django 공식문서 번역] Models - 3. Methods

이 글은 본인이 공부를 목적으로 공식문서를 읽으며 정리/번역한 글로서 오역이 있을 수 있을 수 있습니다. 또한 본인이 이미 알고 있거나 불필요하다 느끼는 내용들은 누락될 수 있습니다.

Model Methods

model에 Custom method를 정의하면 row단위로 실행이 되고, Manager method는 table 단위로 실행이 된다.

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.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인데 이는 method호출로 여러 attribute을 모아주는 attribute을 만드는 깔끔한 방법이다.

model이 생성되면 자동으로 여러가지 메소드가 생성되는 데, 이 메소드들은 덮어씌워질 수 있다. 아래의 두 메서드는 거의 항상 오버라이드하는 것이 좋다.

1. __str__() : model 인스턴스가 plain string으로 표시되어야 할 때 호출되는 함수 [예:print(obj)]
2. get_absolute_url() : Django가 object의 URL을 계산하는 방법을 알려준다.


댓글

이 블로그의 인기 게시물

[Django REST Framework] create() vs perform_create()

[웹 보안] CORS란?

3. GRAPHQL FRAGMENTS