首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写ModelAdmin的方法

重写ModelAdmin的方法
EN

Stack Overflow用户
提问于 2011-09-19 23:17:54
回答 1查看 3.3K关注 0票数 2

我正在处理一个Django项目,每当管理员在管理控制台(CRUD)中做一些事情时,都会通知一组人。我在ModelAdmin上提到了三种方法,即log_addition、log_created和log_deleted,它们将所有必要的信息保存到一个名为"django_admin_log“的特殊数据库中。

我将以下代码放入我的admin.py中:

代码语言:javascript
复制
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),我不完全确定为什么-重点是重写现有的模型。我试过了,但结果一样。谁能给我指明正确的方向吗?您如何确切地覆盖现有类的方法并赋予它一些额外的功能?谢谢!卢卡

编辑:我想出来了,似乎我不得不注销并重新注册用户,才能让我的更改生效。

EN

回答 1

Stack Overflow用户

发布于 2011-09-19 23:28:32

删除结尾处的返回

如果不起作用,您可以将代码放入一个名为add_view的函数中。

代码语言:javascript
复制
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函数中调用的,因此您可以同样地将代码放在这里。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7478415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档