2017-07-31 75 views
1

我在學習Django教程時遇到了一個問題。我在views.py中設計了detail方法來顯示我以pdf格式和管理頁面添加的每個項目的詳細信息。問題是,當我在管理網頁編輯一個特定的項目,如何添加一個超鏈接指向其對應的detail網頁?Django如何鏈接到管理站點上的項目詳細信息頁面?

我建我的網址以這樣的方式

urlpatterns = [..., url(r'^(?P<item_id>[0-9]+)/$', views.detail, name='detail')] 

爲了做到這一點,我需要,在相應的模板項目編號。看起來change_form.html是模板,覆蓋功能render_change_form裏面MyModelAdmin類是呈現模板的函數。那麼,是否有可能在render_change_form中獲得物品ID?我注意到有這樣一個問題,但沒有被接受的答案。 那麼獲取物品ID是解決它的正確方法嗎?有什麼適當的解決方案來做到這一點?

+0

你想在管理中更改嗎?或在你的網站前? – Exprator

+0

在管理員中。我想在管理員中添加一個超鏈接,該鏈接指向該項目的相應「詳細信息」網頁 – zzitaI

+0

,但在列表頁面上的管理員可以點擊一個項目,只顯示詳細信息頁面 – Exprator

回答

0

解決方案是get_absolute_url()方法。

例子:

from django.urls import reverse 

class Foo(models.Model): 
    ... 
    def get_absolute_url(self): 
     return reverse('detail', args=[str(self.id)]) 

現在按鈕「現場查看」出現在右上方(當你看到如果管理員單個項目)。

Here有關Django admin和get_absolute_url()的更多信息。

相關問題