3. Using django
3.5.2 Managers
Manager는 장고 모델들이 제공하는 데이터베이스 쿼리 오퍼레이션을 통한 인터페이스입니다. 장고 어플리케이션의 모든 모델에는 최소 하나의 매니저가 존재합니다.
매니저 클래스가 작동하는 방식은 Making queries에 나와있습니다. 이 문서는 보다 명확하게 모델 옵션을 다룹니다. 커스터마이즈 매니저의 동작에 대해서 말입니다.
01. Manager names
기본적으로, 장고는 모든 장고 모델 클래스 마다 objects라는 이름의 Manager를 하나씩 추가합니다. 하지만 만약 우리가 objects를 필드 이름 등으로 사용하고 싶다면, 또는 우리가 objects 외에 다른 이름을 manager에게 지어주고 싶다면, 각 모델의 베이스 단계에서 이름을 바꿔 줄 수 있다. 주어진 클래스에서 Manager의 이름을 바꾸고 싶다면, models.Manager() 양식의 클래스 속성을 그 모델에 정의한다. 예를 들어 다음과 같은 방식이다.
from django.db import models
class Person(models.Model):
#...
people = models.Manager()
위 예시와 같은 모델을 사용한다면, Person.objects는 AttributeError를 발생시킬 것이다. (여기서 objects 는 Manager의 기본적인 이름이다.) 하지만 Person.people.all()은 Person 개체의 목록을 제공할 것이다. (위 예제에서 우리가 Manager의 이름을 people로 변경했기 때문이다.)
02. Custom managers
- Adding extra manager methods
- Modifying a manager's initial QuerySet
- Default managers
- Base managers
- Calling custom QuerySet methods from the manager
- Creating a manager with QuerySet methods
- Custom managers and model inheritance
- Implementation concerns
우리는 직접 만든 Managerfmf