Jen*_*n Z 8 django django-admin
我正在为使用标准更改列表作为临时阶段的Django管理界面创建一些自定义视图.除了更改列表页面H1是"选择要更改的对象"之外,这样工作正常."更改"不是用户在我的自定义视图中执行操作的正确动词.
我找到了控制更改列表页面(change_list.html和change_list_results.html)布局的django.contrib.admin模板,但我无法找到标题的提供位置.我猜它是一个视图在某个地方传入的变量?
如何用不那么误导的东西覆盖这个文本,例如"选择对象"而不是"选择要更改的对象"?我可以在所有更改列表视图中更改它,而不仅仅是我正在尝试自定义的特定视图; 但我更喜欢一个覆盖的解决方案,而不是修改django.contrib.admin代码,如果可能的话.
更新:我发现视图负责更改列表,它main.py在django\contrib\admin\views.变量self.title在第69行(Django 1.0).我通过编辑这一行来实现我正在寻找的结果
self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name))
Run Code Online (Sandbox Code Playgroud)
阅读
self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s') % force_unicode(self.opts.verbose_name))
Run Code Online (Sandbox Code Playgroud)
我仍然真的很想听到更好的方法来实现相同的结果,而不涉及黑客攻击django.contrib.admin代码 - 它看起来已经有了一个选项,让我的标题符合我喜欢的方式,但我不确定如何触发它?
jar*_*ssi 17
不知道是否仍然相关,但另一种方式来做到这一点会被传递extra_content的changelist_view方法.例如:
from django.contrib import admin
class MyCustomAdmin(admin.ModelAdmin):
def changelist_view(self, request, extra_context=None):
extra_context = {'title': 'Change this for a custom title.'}
return super(MyCustomAdmin, self).changelist_view(request, extra_context=extra_context)
Run Code Online (Sandbox Code Playgroud)
对于当前版本的 Django:
class CustomChangeList(django.contrib.admin.views.main.ChangeList):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.title = 'My Cool Title'
class MyAdmin(ModelAdmin):
def get_changelist(self, request, **kwargs):
return CustomChangeList
Run Code Online (Sandbox Code Playgroud)
已经有ChangeList定制票:http://code.djangoproject.com/ticket/9749。这将提供更改管理应用程序的许多其他方面的能力。不幸的是,没有干净的方法来实现您的目标。
| 归档时间: |
|
| 查看次数: |
6072 次 |
| 最近记录: |