복붙노트

[PYTHON] Django에서 save를 호출하기 전에 모델이 변경되었는지 검색합니다.

PYTHON

Django에서 save를 호출하기 전에 모델이 변경되었는지 검색합니다.

원격 데이터의 변경 내용을 기반으로 업데이트되는 데이터베이스 모델이 있습니다 (HTML 스크래퍼를 통해).

변경된 필드를 유지하려고합니다. 이전에 모델의 값이 이전의 모델의 값으로 변경된 시간을 나타내는 타임 스탬프입니다 (모델의 save 메소드가 호출 될 때마다이 필드가 업데이트되므로 auto_now와 다릅니다).

여기 내 질문입니다 :

모델의 저장 메소드에서 모델 인스턴스의 현재 값이 데이터베이스의 값과 다른지 여부를 간단히 감지 할 수 있습니까? 또는 변경된 타임 스탬프를 쉽게 유지 관리 할 수있는 대체 방법이 있습니까?

해결법

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

    1.http://code.activestate.com/pypm/django-dirtyfields/

    http://code.activestate.com/pypm/django-dirtyfields/

    django 모델 인스턴스에서 더티 / 변경된 필드를 추적합니다.

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

    2.폼을 통해 인스턴스를 저장하면 form.has_changed ()를 확인할 수 있습니다.

    폼을 통해 인스턴스를 저장하면 form.has_changed ()를 확인할 수 있습니다.

  3. ==============================

    3.레코드 값을 저장할 때 레코드 값의 체크섬을 계산할 수도 있습니다. 그런 다음 나중에 읽을 때 체크섬을 다시 계산하여 변경되었는지 확인하십시오. 아마도 crc32는 Python zlib 표준 모듈에서 작동합니다. (나는 이것이 어떤 종류의 성능을 가지는지 확신 할 수 없다. 그래서 당신은 그것을 조사하고 싶어 할 것이다.)

    레코드 값을 저장할 때 레코드 값의 체크섬을 계산할 수도 있습니다. 그런 다음 나중에 읽을 때 체크섬을 다시 계산하여 변경되었는지 확인하십시오. 아마도 crc32는 Python zlib 표준 모듈에서 작동합니다. (나는 이것이 어떤 종류의 성능을 가지는지 확신 할 수 없다. 그래서 당신은 그것을 조사하고 싶어 할 것이다.)

  4. ==============================

    4.신호음 : http://docs.djangoproject.com/ko/1.2/topics/signals/

    신호음 : http://docs.djangoproject.com/ko/1.2/topics/signals/

    post_save 신호를 사용하여 다른 모델의 관련 필드를 업데이트하여 이전 값을 저장할 수 있습니다. 그런 다음 다음 라운드에서 비교할 게 있습니다.

  5. ==============================

    5.이 라이브러리에는 트랙 FK 조회가 있습니다.

    이 라이브러리에는 트랙 FK 조회가 있습니다.

    https://github.com/mmilkin/django_dirty_bits

  6. from https://stackoverflow.com/questions/5240670/detect-if-a-model-has-changed-before-calling-save-in-django by cc-by-sa and MIT license