복붙노트

[PYTHON] Django : 사후 저장 신호를 사용하여 저장 대 커스터마이즈 할 때

PYTHON

Django : 사후 저장 신호를 사용하여 저장 대 커스터마이즈 할 때

데이터베이스에 일련의 테스트와 사례가 있습니다. 검사가 폐기 될 때마다 검사가 끝나고 검사의 하위 사례도 끝나야합니다. 이 작업을 수행하는 데 두 가지 방법이 있습니다.

1) 저장 기능을 수정하여 최종 날짜 하위 사례를 종료하십시오. 2) 저장된 테스트 모델을 수신하는 수신자를 만든 다음 하위 사례를 종료합니다.

다른 것보다 다른 것을 사용해야하는 이유는 무엇입니까?

편집 :이 블로그 게시물은 모델의 주어진 값을 확인할 때마다 save 메서드를 사용하라는 제안을 보았습니다. end_date를 확인하고 있으므로 맞춤 저장을 사용해야한다고 제안 할 수 있습니까?

Edit2 : 또한 레코드의 경우 전체 계층 구조는 Protocol -> Test -> Case -> Planned_Execution이며 end_dated 일 때마다 모든 자식도 endDate 여야합니다. 나는 내가 기본적으로 똑같이하는 것을 끝낼 것이라고 상상한다.

Edit3 : 현재 save ()가 endDating 테스트인지 여부를 알기 위해서는 이전 데이터와 새 데이터에 대한 액세스 권한이 필요하므로 사용자 정의 저장을 사용했습니다. 다음은 그 모습입니다.

def save(self):
    """Use a custom save to end date any subCases"""
    try:
        orig = Test.objects.get(id=self.id)
        enddated = (not orig.end_date) and self.end_date is not None   
    except:
        enddated = False

    super(Test, self).save()

    if enddated:
        for case in self.case_set.exclude(end_date__isnull=False):
            case.end_date = self.end_date
            case.enddater = self.enddater
            case.save()

해결법

  1. ==============================

    1.나는 일반적으로 다음과 같은 경험 법칙을 사용한다.

    나는 일반적으로 다음과 같은 경험 법칙을 사용한다.

  2. ==============================

    2.나의 이해에서 신호는 모듈을 분리하는 수단이다. 귀하의 작업이 하나의 모듈에서만 발생하는 것으로 보입니다.

    나의 이해에서 신호는 모듈을 분리하는 수단이다. 귀하의 작업이 하나의 모듈에서만 발생하는 것으로 보입니다.

  3. from https://stackoverflow.com/questions/5597378/django-when-to-customize-save-vs-using-post-save-signal by cc-by-sa and MIT license