2014-09-05 2 views
0

내 문제는 객체 저장시 M2M 필드 처리에 관해 묻는 질문과 비슷합니다. Django accessing ManyToMany fields from post_save signal
Django: Using signals to save a ManyToMany fieldm2m_change 신호 처리기에서 객체 생성 감지

기본적으로, M2M 필드를 사용하기 위해서 당신은 m2m_changed보다는 post_save을 수신 할 필요가있다.

내가 가진 문제는 내가 내 작업이 발생하려는 경우에만 만드는 새로운 객체 - post_savecreated 인수를 얻을 수 있지만, 지금까지 내가 말할 수있는 m2m_changed 유사한 아무것도, 그리고 시간을 기준으로 m2m_changed 신호가 트리거되어 객체가 저장되고 PK가 주어 지므로 신호 처리기에서 새로 생성 된 객체인지 또는 업데이트 된 기존 객체인지 여부를 알 수 없습니다.

이 문제가 발생합니까?

+0

당신이 달성하고자하는 것이 post_save 신호 자체에서 수행 될 수 있기 때문에 매우 유용 할 것입니다. 또한, m2m은 구체적으로 _after_ the action (post_save, pre_save 등)이라고 불립니다. – karthikr

답변

0

해결 방법 : - 모델에 할당 된 변수와 함께 post_save 메소드를 사용할 수 있습니다. 예를 들어, 객체를 만들 때 변수를 "created"로 설정할 수 있습니다. 그런 다음 변수가 생성되도록 설정된 경우에만 무언가를 수행하도록 모델에 알릴 수 있습니다. 일단 작업을 수행하면 해당 변수를 "업데이트 됨"으로 설정할 수 있습니다. 그런 다음 조작은 핸들러에서 트리거되지 않습니다.

  • 또는

    당신에게 '를 통해 "기능을 설정 결합 된 모델을 할 수 있습니다. 그렇게하면 장고가 자동으로 수행하는 조인 테이블을 만들고 해당 모델을 기반으로 작업을 수행 할 수 있습니다.
관련 문제