我正在处理一个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),我不完全确定为什么-重点是重写现有的模型。我试过了,但结果一样。谁能给我指明正确的方向吗?您如何确切地覆盖现有类的方法并赋予它一些额外的功能?谢谢!卢卡
编辑:我想出来了,似乎我不得不注销并重新注册用户,才能让我的更改生效。
发布于 2011-09-19 23:28:32
删除结尾处的返回。
如果不起作用,您可以将代码放入一个名为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函数中调用的,因此您可以同样地将代码放在这里。
https://stackoverflow.com/questions/7478415
复制相似问题