在Django 1.8中覆盖现有的模板标签方法

4
我正在尝试对Django的管理界面中的Change List进行一些CSS自定义。更具体地说,是在表格结果上。
我试图向表格的添加一些CSS和标记。
问题在于该代码部分隐藏在模板标签(django/contrib/admin/templatetags/admin_list.py)中而不是模板本身(/templates/admin/change_list_results.html)。
我能够覆盖模板并进行一些更改,但我真的需要知道如何“继承”模板标记到我的项目目录中,而不是直接应用更改到Django的模板标记目录。
我尝试按照以下建议操作,但至少对我来说都没有起作用。 扩展Django Admin模板-修改更改列表 我确定更改需要在admin_list.py的items_for_result方法中完成。
问题是如何覆盖它?items_for_result是一个内部方法,它没有在标签库中注册,因此无法从模板中调用。
那么,我该如何覆盖它并告诉Django不使用旧方法而是我指定的方法?
1个回答

0

恐怕这种改变不容易做到。要覆盖此方法,您需要修改 Django 源代码。然而我们不建议这样做。

如果只是 CSS/HTML 的改变,您可以通过使用 JavaScript 添加样式来实现。创建自定义表单并将新的 JS 文件添加到 Meta 类中即可轻松添加自定义 JS 到管理页面。

请查看文档和示例此处


谢谢Coffee先生,是的,我最近一直在处理表单并编写自己的小部件。这解决了我的问题,尽管如果能够在不覆盖源代码的情况下覆盖任何Django类或方法就更好了。 - Fermin Arellano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接