728x90
class SpeakerManager(models.Manager):
def published_objects(self):
now = timezone.now()
return self.filter(pub_start_date__lte=now, pub_end_date__gte=now)
백엔드 개발을 하다 보면 공통적으로 걸리는 필터들이 있습니다!
저 같은 경우 시작 날짜와 마지막 날짜안에 있는 object만 생성하달라는 요청들이 많았는데요
처음에는 하나하나 filter과 if 문으로 처리했습니다 ㅠㅠ
그런데 너무 비효율적이라고 생각되어서 여유가 있을 때 찾아보니 model Manage을 통해서 제어가 가능하다고 하는 글을 봤습니다
class Speaker(BaseModel):
objects = SpeakerManager()
저 윗쪽 코드 처럼 manager을 만들고 objects에 model을 불러오면 함수 사용이 가능합니다
(함수를 사용해야 하는데 그냥 바로 적용되는 줄 알고 신나서 다했다고 보고 했는데 빠꾸 먹었습니다 ㅠ)
그래서 Speaker.objects.published_objects()이렇게 사용해야 합니다
이렇게 manager를 사용해서 간편하게 필터링 된 objects를 불러올 수 있습니다
{% for speaker in program_detail.speakers_list.published_objects %}
이렇게 manager을 사용하면 하나 더 djang html 상에서도 이렇게 사용이 가능한 기술입니다!
'Django > admin' 카테고리의 다른 글
Django admin delete action customize (0) | 2024.05.27 |
---|---|
Django admin 필드 image로 나타내기 (0) | 2023.12.09 |