2017-07-31 80 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()的更多信息。

相关问题