장고 모델 매니저와 모델 메소드

정은경·2021년 2월 15일
0

장고 메델에 objects 필드를 명시해야하는 이유

CASE A

from django.db import models

from tracker.core.models import TimeStampedModel


class Flavor(TimeStampedModel):
    title = models.CharField(max_length=200)
    # objects = models.Manager()
    foo = models.Manager()

CASE B

from django.db import models

from tracker.core.models import TimeStampedModel


class Flavor(TimeStampedModel):
    title = models.CharField(max_length=200)
    objects = models.Manager()
    foo = models.Manager()

CASE A와 B의 차이는?!
CASE A => Flavor 모델에서 foo가 있고, objects는 사라짐
CASE B => Flavor 모델에서 object가 있고, foo도 있음

'objects'는 장고모델에 있는 manager의 디폴트 이름!!

모델 메소드와 모델 매니저의 차이

Define custom methods on a model to add custom “row-level” functionality to your objects. Whereas Manager methods are intended to do “table-wide” things, model methods should act on a particular model instance.

  • 모델 메소드
    : row-level 기능

  • 모델 매니저
    : table-wide와 관련된 것들
    특정 모델 인스턴스에서만 행동해야만 한는 모델 메소드들을 의미

*결론
모델 메소드 중에 특정 모델 인스턴스에 특화된 친구들만 모델 매니저!!

Reference

Reference

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글