【问题标题】:How to customize django admin如何自定义 django 管理员
【发布时间】:2019-04-15 19:00:26
【问题描述】:

此代码工作正常。但我想要某种形式来编写主题和消息以便回复,而不是在回复函数中定义主题消息。如何在 django 管理页面中为回复操作添加回复表单

admin.py

class ContactAdmin(admin.ModelAdmin):
list_display = ['full_name','email','comment','time']
list_filter = ['time']
search_fields = ['name','comment']
readonly_fields = ['full_name','email','comment','time']
ordering = ['time']
actions = ['reply']

def reply(self,request,queryset):
    for reciever in queryset:
        send_mail('subject','message',settings.EMAIL_HOST_USER,[reciever.email],fail_silently=False)
        messages.success(request,'Your message has been replied successfully.')

【问题讨论】:

    标签: django admin


    【解决方案1】:

    您可以执行以下操作:创建自定义管理模板。将 django 安装中的标准模板复制到目录 yourproject/templates/admin/youapp/yourmodel/change_list.html 将名称 yourproject 等替换为您的姓名。

    class YourAdmin(admin.ModelAdmin):
    
        change_list_template = 'admin/yourapp/yourmodel/change_list.html'
    

    然后您在表单元素中修改此模板(修改显示在注释行之间 - 只插入了两行):

          {% block pagination %}{% pagination cl %}{% endblock %}
    
            <!--Inserted code starts here-->
    
            <input type="message" name="mail_subject">
            <textarea type="message" name="mail_message"><textarea>
    
            <!--End of inserted code-->
    
          </form>
    
        </div>
      </div>
    
    {% endblock %}
    

    然后您可以在您的操作方法中访问这两个输入的值。

    def send_mail(self, request, queryset):
        form_data = request.POST.dict()
        subject= form_data["mail_subject"]
        message = form_data["mail_message"]
        ... and then send your emails
    

    【讨论】:

    • 感谢您的回复。能否请您在 change_list.html 中写下我们必须扩展和加载的内容
    • TEAdmin 是什么??
    • 我编辑了答案 - 我找到了一个更简单的解决方案。
    • 非常感谢您的回复。我如何从 django 安装中复制标准模板。在 change_list.html 页面中只有 form.other dissapered。我只希望在我的回复操作下使用 change_list.html不在整个联系页面中
    • 模板在“django/contrib/admin/templates/admin/”中。将 change_list.html 从那里复制到您的项目中 yourproject/templates/admin/yourapp/yourmodel。也许还可以重命名它(例如,更改为 change_list_mod.html)以确保如果 django 找不到它会出现错误 - 那么您还需要更改行:change_list_template = 'admin/yourapp/yourmodel/change_list_mod.html'跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2016-12-05
    • 2016-03-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多