2012-08-10 3 views
2

모델의 관련 필드에 대해 유효성 검사를 수행 할 적절한시기는 언제입니까?관련 필드에 대한 장고 모델 유효성 확인

예를 들어 재생 목록 클래스와 ManyToMany 관계를 갖는 비디오 클래스가있는 경우 비디오가 '비공개'로 변경되면 모든 재생 목록에서 제거되어야합니다.

모델의 clean() 메서드에서이 작업을 수행하면 모델이 유효성 검사에 실패하고 저장하지 않을 수 있지만 재생 목록 참조가 삭제되므로 위험한 것처럼 보입니다.

post_save 또는 pre_save 올바른 방향으로 신호를 보내고 있습니까?

먼저 한 작업을 수행하는 post_save 신호를 사용하고 있습니다 :

+0

좋은 생각이거나, 저장 방법 (IMHO가 적다)을 덮어 쓸 수 있습니다. –

+0

나는 이것을 post_save 신호라고 할 것이다. – Brandon

답변

0

당신은 두 가지 선택이있다. pre_save이 아닙니다. 저장이 실패 할 수 있기 때문에 저장 작업이 올바르게 수행 된 경우에만 저장하려고합니다.

다른 옵션은 같은 모델의 save() 메소드를 오버라이드한다 : 당신이 다른 모델을 처리하기 때문에

def save(self, *args, **kwargs): 
    super(MyModel, self).save(*args, **kwargs) 
    # do stuff for removing whatever you want to remove 

내 개인적인 선택은 처음이다. 현재의 것을 다루기 만하면, 나는 두 번째 것을 할 것입니다. 그러나 그것은 단지 개인적인 생각입니다.

관련 문제