我正在开发一个Django项目,任何时候管理员在管理控制台(CRUD)中执行某些操作,一组人会收到通知。我在ModelAdmin上指出了三个名为log_addition,log_created和log_deleted的方法,它们将所有必要的信息保存到一个名为“django_admin_log”的特殊数据库中。
我将以下代码放入我的admin.py:
class ModelAdmin(admin.ModelAdmin):
def log_addition(self, request, object):
subject = 'admin test of creation'
message = 'admin creation detected'
from_addr = 'no_reply@example.com'
recipient_list = ('luka@example.com',)
send_mail(subject, message, from_addr, recipient_list)
return super(ModelAdmin, self).log_addition( *args, **kwargs )
但是,当我创建新用户时,此代码会被忽略。许多帖子实际上建议创建一个不同的类名(MyModelAdmin),我不完全确定原因 - 重点是覆盖现有模型。我尝试过,但结果相同。有人能指出我正确的方向吗?您究竟如何覆盖现有类的方法并为其提供一些额外的功能? 谢谢! 卢卡
编辑:我想通了,似乎我必须取消注册并重新注册用户才能让我的工作变更。答案 0 :(得分:2)
删除最后的返回。
如果这不起作用,您可以将代码放在名为 add_view 的函数中:
class ModelAdmin(admin.ModelAdmin):
add_view(self, request):
...
super(ModelAdmin, self).add_view( *args, **kwargs)
可以覆盖此功能以向管理员视图添加功能。如果你看一下管理员代码:
https://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py#L923
你会看到你试图覆盖的函数是从add_view函数中调用的,所以你可以同样把代码放在这里