Я думаю, что это будет делать то, что вы хотите. ModelAdmin.get_urls ()
Но проблема будет в том, как подключить новый URL к представлению admin
?
Значение по умолчанию get_urls()
находится в django/contrib/admin/options.py
, и в нем есть несколько сложный код для генерации URL-адресов по умолчанию.
def get_urls(self):
from django.conf.urls.defaults import patterns, url
def wrap(view):
def wrapper(*args, **kwargs):
return self.admin_site.admin_view(view)(*args, **kwargs)
return update_wrapper(wrapper, view)
info = self.model._meta.app_label, self.model._meta.module_name
urlpatterns = patterns('',
url(r'^$',
wrap(self.changelist_view),
name='%s_%s_changelist' % info),
url(r'^add/$',
wrap(self.add_view),
name='%s_%s_add' % info),
url(r'^(.+)/history/$',
wrap(self.history_view),
name='%s_%s_history' % info),
url(r'^(.+)/delete/$',
wrap(self.delete_view),
name='%s_%s_delete' % info),
url(r'^(.+)/$',
wrap(self.change_view),
name='%s_%s_change' % info),
)
return urlpatterns
Я бы использовал эту функцию в каждом из ваших ModelAdmin
s, но измените текст URL на ваш языковой эквивалент.
В вашем примере add/
будет выглядеть так:
url(r'^nuevo/$',
wrap(self.add_view),
name='%s_%s_add' % info)
Обратите внимание, что я оставил %s_%s_add
на английском языке.
Вероятно, вы можете обернуть эту функцию, чтобы вам не нужно было включать все это в каждый класс ModelAdmin.
Редактировать
Этот код использует функцию с именем update_wrapper
, которая импортируется следующим образом:
from django.utils.functional import update_wrapper
Я не видел эту функцию раньше, и я сомневаюсь, что многие люди видели это, поэтому я подумал, что было бы полезно указать на импорт.