2010-11-10 120 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()