2016-10-20 38 views
1

我想刪除一個模型(House),但在此之前,將其插入已刪除的表格中。 至今:如何用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中保存已刪除的房子和孩子。問題是我不知道如何在kwargs傳遞DELETE_REASON我的方法

回答

0

只是實例

# 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', '') 
    ... 

而且你爲什麼對sender == House檢查,如果你在裝飾PARAMS設置它傳遞呢?

+0

爲什麼我沒有想到這個 –