对于非英语的Django用户/爱好者,对每一个"app"也加入一个"verbose_name"或"verbose_name_plural",以便于WEB
PAGE的友好好浏览是必要的。

我的实现方式:
一、修改adminapplist.py为:
####################################################
from django.core import template

class AdminApplistNode(template.Node):
    def __init__(self, varname):
        self.varname = varname

    def render(self, context):
        from django.core import meta
        from django.utils.text import capfirst
        app_list = []
        user = context['user']

        for app in meta.get_installed_model_modules():
            app_label = ''
            app_name = app.__name__[app.__name__.rindex('.')+1:]

            if hasattr(app, 'verbose_name'):
                app_label = app.verbose_name
            else:
                app_label = app_name;
            has_module_perms = user.has_module_perms(app_label)

            if has_module_perms:
                model_list = []
                for m in app._MODELS:
                    if m._meta.admin:
                        module_name = m._meta.module_name
                        perms = {
                            'add': user.has_perm("%s.%s" % (app_label,
m._meta.get_add_permission())),
                            'change': user.has_perm("%s.%s" %
(app_label, m._meta.get_change_permission())),
                            'delete': user.has_perm("%s.%s" %
(app_label, m._meta.get_delete_permission())),
                        }

                        # Check whether user has any perm for this
module.
                        # If so, add the module to the model_list.
                        if True in perms.values():
                            model_list.append({
                                'name':
capfirst(m._meta.verbose_name_plural),
                                'admin_url': '%s/%s/' % (app_name,
m._meta.module_name),
                                'perms': perms,
                            })

                if model_list:
                    app_list.append({
                        'name': app_name.title(),
                        'title': app_label.title(),
                        'has_module_perms': has_module_perms,
                        'models': model_list,
                    })
        context[self.varname] = app_list
        return ''

def get_admin_app_list(parser, token):
    """
    {% get_admin_app_list as app_list %}
    """
    tokens = token.contents.split()
    if len(tokens) < 3:
        raise template.TemplateSyntaxError, "'%s' tag requires two
arguments" % tokens[0]
    if tokens[1] != 'as':
        raise template.TemplateSyntaxError, "First argument to '%s' tag
must be 'as'" % tokens[0]
    return AdminApplistNode(tokens[2])

template.register_tag('get_admin_app_list', get_admin_app_list)
###################################################################
二、修改template index.hmtl的内容:
{% for app in app_list %}
        <div class="module">
        <h2>{{ app.name }}</h2>
        <table>
        {% for model in app.models %}
为:
{% for app in app_list %}
        <div class="module">
        <h2>{{ app.title }}</h2>
        <table>
        {% for model in app.models %}
###################################################################
###################################################################
三、这样在每一个app的module定义PY文件中加入如下属性就可以在管理界面中看到了:
###################################################################
verbose_name = u'保险业务信息管理'.encode('gb2312')
###################################################################

Reply via email to