바뀜

둘러보기로 가기 검색하러 가기
757 바이트 추가됨 ,  2024년 4월 2일 (화) 13:32
편집 요약 없음
42번째 줄: 42번째 줄:  
= 모델 안에서 정의하는 함수 =
 
= 모델 안에서 정의하는 함수 =
 
모델 클래스 안에 함수를 정의할 수 있다. 객체.함수() 형태로 뷰에서 사용할 수 있고, <nowiki>{{객체.함수}}</nowiki> 형태로 탬플릿에서 사용할 수도 있다..! 이런 기능이 있다면 엄청나게 많은, 간단한 활용이 가능해지지. url.py를 거치지 않고도 하위객체를 생성한다든가.
 
모델 클래스 안에 함수를 정의할 수 있다. 객체.함수() 형태로 뷰에서 사용할 수 있고, <nowiki>{{객체.함수}}</nowiki> 형태로 탬플릿에서 사용할 수도 있다..! 이런 기능이 있다면 엄청나게 많은, 간단한 활용이 가능해지지. url.py를 거치지 않고도 하위객체를 생성한다든가.
 +
 +
= 기존 함수 오버라이딩 =
 +
save, delete 등 함수를 오버라이딩하여 특수한 처리를 할 수 있다.<syntaxhighlight lang="python">
 +
class 모델명
 +
    ...
 +
    created_at = models.DateTimeField(auto_now_add=True)
 +
    ...
 +
   
 +
    def save(self, *args, **kwargs):
 +
        if self.pk is None:
 +
            # 새로운 객체 생성 시 실행할 로직
 +
            if not self.name and self.grade and self.cl_num:
 +
                self.name =  f'{self.grade}학년 {self.cl_num}반'
 +
        else:
 +
            # 객체 업데이트 시 실행할 로직
 +
            pass
 +
        super().save(*args, **kwargs)  # 원래의 save 메서드 호출
 +
        homework_box, created = HomeworkBox.objects.get_or_create(homeroom=self)
 +
</syntaxhighlight>

둘러보기 메뉴