在django admin中为一个对象添加一个额外的按钮

时间:2010-10-06 15:35:06

标签: django django-admin

我希望没有被问及我错过了,但是我搜索了一堆却找不到任何东西。

我在添加或更改对象时向django管理员添加了额外的保存按钮。这样做很容易。我只是覆盖了submit_line.html以添加额外的按钮,然后覆盖save_model函数以检查该按钮的名称。它很棒。

我的问题是我只需要这个按钮就可以显示一个特定的对象...而不是全部。我查看了change_form.html以了解它是如何知道它正在处理的对象并找到了{{opts.module_name}},但它似乎无法在submit_line.html中访问。我尝试将其打印出来并且没有任何显示。

我还考虑过hacking save_as(不是非常优雅,但我并不关心这个特定的项目),但是这个按钮只显示变化..而不是添加,所以这不起作用。

有没有人知道如何在submit_line.html中检测我正在使用的对象?或者其他任何方式吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

你可以使用这样的javascript来实现:

/static/js/useful.js

$(document).ready(function ($) {
    $('input[name="_addanother"]').before('<input type="submit" name="_use" value="Useful functionality"/>');
});

并在您的ModelAdmin中添加:

class MyModelAdmin(admin.ModelAdmin):
     class Media:
        js = ('/static/js/useful.js',)

答案 1 :(得分:0)

您应该可以通过change_view访问original上下文中的原始对象。例如,{{ original.id }}应该打印其ID!