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