【问题标题】:How Django links to item detail page at admin site?Django 如何链接到管理站点的项目详细信息页面?
【发布时间】:2017-07-31 04:54:26
【问题描述】:

我在学习 Django 教程时遇到了一个问题。我在views.py 中设计了一个detail 方法,以显示我以pdf 格式和管理页面添加的每个项目的详细信息。问题是,当我在管理网页编辑特定项目时,如何添加指向其对应detail网页的超链接?

我以这种方式构建我的网址:

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

为此,我需要在相应的模板中获取 item id。似乎change_form.html 是模板,MyModelAdmin 类中覆盖的函数render_change_form 是渲染模板的函数。那么,是否可以在render_change_form 中获取项目 ID?我注意到有一个问题在问这个问题,但没有公认的答案。 那么获取项目ID是解决它的正确方法吗?这样做的正确解决方案是什么?

【问题讨论】:

  • 您要在管理员中进行更改吗?还是在您网站的前面??
  • 在管理员中。我想在后台添加一个超链接,指向该项目对应的detail网页
  • 但在列表页面的管理员中,单击一个可用的项目仅进入详细信息页面
  • 我的意思是,我设计了自己的详细功能,该功能会为该项目生成报告。我想添加一个链接到该报告的链接。这与只在管理站点的项目列表中单击项目不同。

标签: python django


【解决方案1】:

解决方案是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 管理员和get_absolute_url() 的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多