2010-11-10 161 views
1

我只需要在模型被刪除時發送郵件通知。我可以通過重寫delete()方法來實現這一點。但是,通知郵件應該指定實際刪除此模型的當前用戶。有沒有辦法讓delete()方法中的當前用戶?Django - 模型 - 覆蓋刪除()

+0

如果從沒有用戶的shell中刪除模型會怎麼樣? – 2010-11-11 17:53:10

+0

@Ignacio我們的假設是,在一個業務場景中,管理員只能在管理界面中刪除此模型。 – 2010-11-11 17:57:27

回答

2
  1. 正確的方式在一般掛鉤的事件,如刪除是使用信號和不覆蓋的刪除方法:https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_delete
  2. 在這兩種情況下,你不能得到用戶,因爲可能沒有用戶,因爲從控制檯或其他方式發生刪除時,如果您需要處理用戶觸發的刪除,解決方案是限制刪除僅發生在視圖中,並將這些視圖封裝到以適合您的應用的任何方式處理刪除。
0

您可能想在視圖中執行此操作,以便您可以訪問該用戶。例如:

def my_view(request): 
    # Send an e-mail containing request.user 
    object = Model.objects.get(id=123) 
    object.delete()