2011-04-28 43 views

回答

1

我認爲這是做你想做的。 ModelAdmin.get_urls()
但問題是,你如何將新網址連接到admin視圖?

默認get_urls()django/contrib/admin/options.py,它有一些有點複雜的代碼來生成默認的網址。

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 

我從來沒有見過這個功能,我懷疑很多人都讓我覺得這一定指出進口是有用的。

+0

謝謝!這種機制看起來很麻煩並且很容易失敗。網絡上沒有太多有關這樣做的信息。當我完成時,我會小心並在這裏張貼結果。 – Sergio 2011-04-28 18:36:28