Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-Models-overriding delete()_Django_Django Models - Fatal编程技术网

Django-Models-overriding delete()

Django-Models-overriding delete(),django,django-models,Django,Django Models,我只需要在删除模型时发送邮件通知。我可以通过重写delete()方法来实现这一点。但是,通知邮件应该指定实际删除此模型的当前用户。有没有办法在delete()方法中获取当前用户?您可能希望在视图中执行此操作,这样您就可以访问该用户。例如: def my_view(request): # Send an e-mail containing request.user object = Model.objects.get(id=123) object.delete() 您可能

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

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

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

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

def my_view(request):
    # Send an e-mail containing request.user
    object = Model.objects.get(id=123)
    object.delete()
  • 通常与删除等事件挂钩的正确方法是使用信号,而不是重写delete方法:
  • 在这两种情况下,您都无法获取用户,因为可能没有用户,例如从控制台或以其他方式进行删除时
  • 如果您需要处理用户触发的删除,解决方案是将删除限制为仅在视图中发生,并包装这些视图,以适合您的应用程序的任何方式处理删除
  • 通常与删除等事件挂钩的正确方法是使用信号,而不是重写delete方法:
  • 在这两种情况下,您都无法获取用户,因为可能没有用户,例如从控制台或以其他方式进行删除时
  • 如果您需要处理用户触发的删除,解决方案是将删除限制为仅在视图中发生,并包装这些视图,以适合您的应用程序的任何方式处理删除
    如果从没有用户的shell中删除模型会怎么样?@Ignacio我们的假设是,在业务场景中,管理员只能在管理界面中删除此模型。如果从没有用户的shell中删除模型会怎么样?@Ignacio我们的假设是,在业务场景中,管理员只能在管理界面中删除此模型。