Django admin Django管理-如何使用动态字符串自定义标题

Django admin Django管理-如何使用动态字符串自定义标题,django-admin,Django Admin,我想为特定的模型编辑页面自定义管理模板中使用的标题。虽然我可以修改模板,但我真正想做的是修改传入的上下文参数“title”。如何执行此操作?执行此操作的方法是在您自己的MyModelAdmin中覆盖ModelAdmin的change\u view方法,在extra\u上下文参数中传递自定义标题,如下所示: from django.contrib.admin.util import unquote from django.contrib.admin.options import csrf_prot

我想为特定的模型编辑页面自定义管理模板中使用的标题。虽然我可以修改模板,但我真正想做的是修改传入的上下文参数“title”。如何执行此操作?

执行此操作的方法是在您自己的MyModelAdmin中覆盖ModelAdmin的change\u view方法,在extra\u上下文参数中传递自定义标题,如下所示:

from django.contrib.admin.util import unquote
from django.contrib.admin.options import csrf_protect_m
from django.db import transaction

@csrf_protect_m
@transaction.commit_on_success
def change_view(self, request, object_id, form_url='', extra_context=None):
        obj = self.get_object(request, unquote(object_id)) # get the object if you need it
        extra_context = {'title': _('Change MYOBJ - %s') % (obj.SOME_TEXT) }
        return super(MyModelAdmin, self).change_view(request, object_id, form_url, extra_context)

方法是在您自己的MyModelAdmin中重写ModelAdmin的change\u view方法,在extra\u上下文参数中传递自定义标题,如下所示:

from django.contrib.admin.util import unquote
from django.contrib.admin.options import csrf_protect_m
from django.db import transaction

@csrf_protect_m
@transaction.commit_on_success
def change_view(self, request, object_id, form_url='', extra_context=None):
        obj = self.get_object(request, unquote(object_id)) # get the object if you need it
        extra_context = {'title': _('Change MYOBJ - %s') % (obj.SOME_TEXT) }
        return super(MyModelAdmin, self).change_view(request, object_id, form_url, extra_context)

我最近不得不这样做,对于django不支持的东西,这比我想象的要容易

在Admin类中,添加以下方法:

changelist\u viewself,request,extra\u context=None changeform\u viewself,request,object\u id=None,form\u url=,extra\u context=None 添加\u viewself、请求、表单\u url=extra\u context=None 更改\视图自身、请求、对象\ id、表单\ url=、额外\上下文=无 def delete_viewself、请求、对象id、额外上下文=无 历史\视图自身、请求、对象\ id、额外\上下文=无 我知道,名单很长。只覆盖你需要的

重写时,只需将标题插入extra_content参数,如下所示:

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
    if extra_context is None:
        extra_context = {}
    extra_context['title'] = 'My Custom Title'

    return super().changeform_view(
        request, object_id, form_url, extra_context)
如果您经常使用它,您甚至可以创建一个mixin来覆盖所有这些方法并在其中插入自定义标题


.

我最近不得不这样做,对于django不支持的东西,这比我想象的要容易

在Admin类中,添加以下方法:

changelist\u viewself,request,extra\u context=None changeform\u viewself,request,object\u id=None,form\u url=,extra\u context=None 添加\u viewself、请求、表单\u url=extra\u context=None 更改\视图自身、请求、对象\ id、表单\ url=、额外\上下文=无 def delete_viewself、请求、对象id、额外上下文=无 历史\视图自身、请求、对象\ id、额外\上下文=无 我知道,名单很长。只覆盖你需要的

重写时,只需将标题插入extra_content参数,如下所示:

def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
    if extra_context is None:
        extra_context = {}
    extra_context['title'] = 'My Custom Title'

    return super().changeform_view(
        request, object_id, form_url, extra_context)
如果您经常使用它,您甚至可以创建一个mixin来覆盖所有这些方法并在其中插入自定义标题