Django管理员添加自定义链接到更改列表vi

2024-04-19 14:34:44 发布

您现在位置:Python中文网/ 问答频道 /正文

首先感谢您花时间阅读我的问题
我试图添加一个自定义按钮到我的管理变更列表视图,但它总是给我找不到页面(404)

此my modelAdmin代码:

class MyModelAdmin(admin.ModelAdmin):

    class Media:

        js = ('admin/js/additional_js.js',)

    model = MyModel

    def get_urls(self):
        urls = super(MyModelAdmin, self).get_urls()
        analyze_url = patterns('',
                           (r'^(?P<pk>\d+)/analyze/$', 
                        self.admin_site.admin_view(self.analyze_view))
                           )
        return analyze_url + urls

    def analyze_view(self, request, pk):
        # some code here
        HttpResponseRedirect(
            reverse('admin:myapp_MyModel_change', args=(pk,))
        )

用于将自定义链接添加到更改列表视图的jQuery代码:

^{pr2}$

当我单击我的自定义链接时,它会显示以下信息:

主键为“3/change/analyze”的MyModel对象不存在。

我看到链接没有指向视图
有人能帮我解决这个问题吗。
谢谢


Tags: 代码selfview视图列表admin链接def
1条回答
网友
1楼 · 发布于 2024-04-19 14:34:44

在django1.9中,管理更改url已更改为/admin/<app>/<model>/<pk>/change/release notes)。在

因此,在html中链接到href="analyze/"是没有意义的。相对url被视为/admin/<app>/<model>/3/change/analyze,而不是您期望的/admin/<app>/<model>/3/analyze。在

通过将链接更改为:

<a href="../analyze/" ...

理想情况下,最好是反向url,而不是有一个相对链接。我认为这会使代码不那么脆弱。在

由于您使用的是Django 1.9,因此可以更新代码以使用列表而不是patterns

^{pr2}$

相关问题 更多 >