【问题标题】:Django-mailer customizing admin areaDjango-mailer 自定义管理区域
【发布时间】:2021-04-06 12:14:42
【问题描述】:

使用 django mailer (https://github.com/pinax/django-mailer) 时,我意识到添加到管理区域的默认表(例如消息日志和消息)没有添加 message_log 字段,如果查看添加的表,该字段确实可用.

由于错误消息对我来说非常有价值,所以我想添加它,并简单地将“log_message”添加到应用程序的 MessageLogAdmin 中,如下所示:

class MessageLogAdmin(MessageAdminMixin, admin.ModelAdmin):

    list_display = ["id", show_to, "subject", "message_id", "when_attempted", "result", "log_message"]
    list_filter = ["result"]
    date_hierarchy = "when_attempted"
    readonly_fields = ['plain_text_body', 'message_id']
    search_fields = ['message_id']

但是,除了修改源代码之外,真的没有其他方法可以为 django-mailer 自定义管理区域吗?例如通过settings.py

【问题讨论】:

    标签: django django-mailer


    【解决方案1】:

    不,你不能通过 settings.py 做到这一点

    如果我理解正确,您不会为了编辑 admin.py 而创建应用程序,而是将其保存在 requirements.txt 文件中。在这种情况下,您可以执行以下操作:

    class MyOwnMessageLogAdmin(MessageAdminMixin, admin.ModelAdmin):
    
        list_display = ["id", show_to, "subject", "message_id", "when_attempted", "result", "log_message"]
        list_filter = ["result"]
        date_hierarchy = "when_attempted"
        readonly_fields = ['plain_text_body', 'message_id']
        search_fields = ['message_id']
    
    admin.site.unregister(MessageLog)
    admin.site.register(MessageLog, MyOwnMessageLogAdmin)
    

    【讨论】:

    • ...但是代码将在哪里存在是另一回事。您要么必须为此制作一个本地应用程序,要么将其放入其他应用程序的admin.py
    • 这正是我所关心的,为了添加一串文本而分叉整个应用程序似乎有点过头了。我想我希望有一些额外的设置可用。但是,我认为您提供的替代方案对我来说已经足够了(我只会将它包含在我的一个 admin.py 文件中)。
    • 是的,我自己有时也使用过这个解决方案,因为我不喜欢 fork 应用程序,除非我绝对必须这样做。以便能够轻松更新新版本等。至于代码,将其放在随机应用程序中似乎很奇怪。在大型项目中,我经常有一个“扩展”应用程序来处理这些事情,或者你可以制作一个只有 admin.py 的“邮件扩展”应用程序
    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 2018-09-07
    • 2011-10-08
    • 2014-06-23
    相关资源
    最近更新 更多