Django - 模型 - 覆盖删除()

时间:2010-11-10 17:14:21

标签: django django-models

我只需要在删除模型时发送邮件通知。我可以通过重写delete()方法来实现这一点。但是,通知邮件应指定实际删除此模型的当前用户。有没有办法让当前用户进入delete()方法?

2 个答案:

答案 0 :(得分:3)

  1. 将一般性地挂钩到删除等事件的正确方法是使用信号而不是覆盖删除方法:https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_delete
  2. 在这两种情况下,您都无法获得用户,因为可能没有用户,例如从控制台发生删除或其他方式
  3. 如果您需要处理用户触发的删除,解决方案是将删除限制为仅发生在视图中,并以适合您的应用程序的任何方式包装这些视图以处理删除。

答案 1 :(得分:0)

您可能希望在视图中执行此操作,以便您可以访问该用户。例如:

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