有沒有辦法使用django pre_delete信號取消記錄刪除?如何取消django信號中的刪除
例如:
def on_delete(sender,**kwargs):
if not <some condition>:
#cancel the deletion
# else continue with the deletion
pre_delete.connect(on_delete,sender=MyModel)
,另一個問題是,有沒有辦法說的典範「,改變文件前先刪除原來的文件」因爲現在這是我做的(見代碼下面),我不確定這是否是最好的方式。使用內置時
def on_save(sender,**kwargs):
obj = kwargs['instance']
try:
id = obj.pk
# find the file
original_file = sender.objects.get(pk=id)
# delete the original file before uploading a new file
original_file.file.delete()
except ....
pre_save.connect(on_save,sender=ModelWithFileUpload)
(在Django 1.2會自動刪除變更或刪除,但在Django 1.3的文件,他們取消了這一功能)
在此先感謝
我不會這樣做。是的,它適用於自定義視圖,但有人試圖通過管理員刪除一個對象將得到一個令人討厭的錯誤,如果/當該異常引發和處理。 – shadfc 2011-04-16 22:06:23
你是對的。正如我所說,這是醜陋的黑客。 – thedk 2011-04-18 12:17:38
我不認爲這在任何情況下都是黑客行爲。當嘗試刪除只能發生在錯誤情況下時,拋出異常似乎是正確的反應。 – Teekin 2017-04-30 19:12:23