我希望没有被问及我错过了,但是我搜索了一堆却找不到任何东西。
我在添加或更改对象时向django管理员添加了额外的保存按钮。这样做很容易。我只是覆盖了submit_line.html以添加额外的按钮,然后覆盖save_model函数以检查该按钮的名称。它很棒。
我的问题是我只需要这个按钮就可以显示一个特定的对象...而不是全部。我查看了change_form.html以了解它是如何知道它正在处理的对象并找到了{{opts.module_name}},但它似乎无法在submit_line.html中访问。我尝试将其打印出来并且没有任何显示。
我还考虑过hacking save_as(不是非常优雅,但我并不关心这个特定的项目),但是这个按钮只显示变化..而不是添加,所以这不起作用。
有没有人知道如何在submit_line.html中检测我正在使用的对象?或者其他任何方式吗?
谢谢!
答案 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!