2016-10-20 3 views
1

모델 (하우스)을 삭제하고 싶지만 그 전에 삭제 된 테이블에 삽입하고 싶습니다. 회까지 :pre_delete 신호로 추가 인수를 보내는 방법은 무엇입니까?

@receiver(pre_delete, sender=House) 
def delete_house(sender, instance, **kwargs): 
    reason = kwargs.get('delete_reason', '') 
    if sender == House: 
    deleted_house = DeletedHouse(doc_code=instance.doc_code, 
           tell=instance.tell, 
           address=instance.address, 
           delete_reason=reason) 
    deleted_house.save() 

    for member in instance.child_set: 
    m = DeletedMember(first_name=member.first_name, 
        last_name=member.last_name, 
        house=deleted_house 
        ) 
    m.save() 

집에서 모든 아동 (CASCADE)이 삭제됩니다. 그래서 나는 삭제 된 집과 아이들을 pre_delete에 저장해야한다. 문제는

답변

0

그냥 당신이 데코레이터 PARAMS에 설정하면 왜 sender == House 확인하는 경우 또한

# before you call delete 
house.delete_reason = 'banana' 

# and then you can retrieve it in your function 
@receiver(pre_delete, sender=House) 
def delete_house(sender, instance, **kwargs): 
    reason = getattr(instance, 'delete_reason', '') 
    ... 

로 전달 내 방법 kwargs로에 DELETE_REASON 전달하는 방법을 몰라?

+0

왜 이런 생각을하지 않았습니까? –

관련 문제