我正在研究一个Django项目,任何时候管理员在管理控制台(CRUD)中执行某些操作时,都会收到一组人员的通知。我被指向ModelAdmin上的三种称为log_addition,log_created和log_deleted的方法,它们将所有必需的信息保存到名为“django_admin_log”的特殊数据库中。重写ModelAdmin的方法
我把下面的代码到我的admin.py:
class ModelAdmin(admin.ModelAdmin):
def log_addition(self, request, object):
subject = 'admin test of creation'
message = 'admin creation detected'
from_addr = '[email protected]'
recipient_list = ('[email protected]',)
send_mail(subject, message, from_addr, recipient_list)
return super(ModelAdmin, self).log_addition(*args, **kwargs)
此代码然而,当我创建新用户被忽略。许多帖子实际上建议创建一个不同的类名(MyModelAdmin),我不完全确定为什么 - 重点是覆盖现有的模型。我试过了,但结果相同。任何人都可以指出我正确的方向吗?如何重写现有类的方法并给它一些额外的功能? 谢谢! Luka
编辑:我想通了,似乎我不得不取消注册,并重新注册用户为我的变化工作。
其实,我不不想重载add_view,因为它专门使用这三种方法中的一种,所以我宁愿直接覆盖这些方法。正如我刚刚发现它,我需要以下:'admin.site.unregister(用户) admin.site.register(用户,MyModelAdmin)',然后我的功能踢。然而,一个奇怪的副作用踢在 - 我的管理控制台丢失了一堆帮助者的东西,如过滤器视图等,但功能仍然完好无损。 – Lukich