帮我更改应用的权限名称
我的应用的权限:
[] articles | article | Can add article
[] articles | article | Can change article
[] articles | article | Can delete article
我希望获得西班牙语权限的名称
Articulo - Puede cambiar articulo
Articulo - Puede eliminar artículo
Articulo - Puede crear articulo
我有两个选项:
from django.utils import six
def permissions_new_unicode(self):
nombre_clase = six.text_type(self.content_type)
nombre_permiso = six.text_type(self.name)
if 'Can delete' in nombre_permiso:
nombre_permiso = nombre_permiso.replace('Can delete', 'Puede eliminar')
elif 'Can add' in nombre_permiso:
nombre_permiso = nombre_permiso.replace('Can add', 'Puede crear')
elif 'Can change' in nombre_permiso:
nombre_permiso = nombre_permiso.replace('Can change', 'Puede modificar')
return u'%s - %s' % ( nombre_clase.title(), nombre_permiso)
替换Permission Class中的__unicode__方法
from django.contrib.auth.models import Permission
Permission.__unicode__ = permissions_new_unicode
答案 0 :(得分:1)
如果您想为django admin部分明确设置语言,请使用此
from django.conf import settings
from django.utils import translation
class AdminLocaleURLMiddleware:
def process_request(self, request):
if request.path.startswith('/admin'):
request.LANG = getattr(settings, 'ADMIN_LANGUAGE_CODE', settings.LANGUAGE_CODE)
translation.activate(request.LANG)
request.LANGUAGE_CODE = request.LANG
然后放在settings.py中的某处:
ADMIN_LANGUAGE_CODE='es'
并添加中间件:
MIDDLEWARE_CLASSES = (
...
'utils.multilang.middleware.AdminLocaleURLMiddleware',
....
答案 1 :(得分:0)
有简短但棘手的答案。我不建议这样做,也不拒绝这样做。但解决方案是:
编辑此路径的 app_labeled_name
修饰的 property
函数:path/to/django/contrib/contenttypes/models.py
类的 ContentType
,变成这样:
@property
def app_labeled_name(self):
model = self.model_class()
if not model:
return self.model
return '%s | %s' % (apps.get_app_config(model._meta.app_label).verbose_name,
model._meta.verbose_name)
诀窍是使用 apps.get_app_config(model._meta.app_label).verbose_name
而不是 model._meta.app_label
,因此它将使用与您应用的 verbose_name
子类中为您的应用设置的任何使用相同的 AppConfig
.