【问题标题】:Adding an extra button to one object in django admin在 django admin 中为一个对象添加一个额外的按钮
【发布时间】:2010-10-06 15:35:05
【问题描述】:

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

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

我的问题是,我只需要为一个特定对象显示此按钮……而不是所有对象。我查看了 change_form.html 以了解它如何知道它正在处理的对象并找到 {{ opts.module_name }},但它似乎无法在 submit_line.html 中访问。我试着打印出来,什么也没出现。

我还考虑过破解 save_as(不是很优雅,但我并不真正关心这个特定项目),但该按钮仅在更改时显示......而不是在添加时显示,所以这行不通。

有谁知道如何检测我在 submit_line.html 中使用的对象?或者有其他方法吗?

谢谢!

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    你可以像这样使用 javascript:

    /static/js/useful.js

    $(文档).ready(函数($){ $('input[name="_addanother"]').before(''); });

    并在您的 ModelAdmin 中添加:

    MyModelAdmin 类(admin.ModelAdmin): 类媒体: js = ('/static/js/useful.js',)

    【讨论】:

    • 很好,但是对于使用它的人来说,由于 code.djangoproject.com/ticket/12882 ,这不起作用,所以我认为一个快速的解决方法是将 $ 替换为 django.jQuery
    • 感谢保罗提供的信息。我是这样实现的:(function($) { $(document).ready(function ($) { $('input[name="_addanother"]').before('<input type="submit" name="_use" value="Useful functionality"/>'); }); })(django.jQuery);
    【解决方案2】:

    您应该能够通过original 访问change_view 的上下文中的原始对象。例如{{ original.id }} 应该打印它的 id!

    【讨论】:

    • 我需要做些什么才能让它工作吗?我把 {{ original.id }} 放在提交按钮之前,什么都没有出现。 (我也在其后添加了一些纯文本以确保显示更改。)
    • 抱歉刚刚看到提交行是通过模板标签呈现的,所以你不能在那里访问原始文件。您需要制作自己的模板标签以将您想要的参数传递给模板,请参阅code.djangoproject.com/browser/django/trunk/django/contrib/… 获取原始标签!
    猜你喜欢
    • 2023-03-06
    • 2021-10-28
    • 1970-01-01
    • 2022-01-12
    • 2013-01-21
    • 2018-09-08
    • 1970-01-01
    • 2015-09-04
    • 1970-01-01
    相关资源
    最近更新 更多