在我的应用程序中,我使用的是django-photologue(第3部分应用程序),在默认配置中,“在网站上查看”管理按钮指向其模板。
我读过“在网站上查看”按钮使用get_absolute_url()模型函数来实现其行为。
我需要更改“在网站上查看”按钮后面的网址。 我是否需要覆盖get_absolute_url()或编辑其他内容?
提前致谢。
答案 0 :(得分:1)
如果可以避免,则不应更改第三方应用程序的文件,因为您基本上需要维护应用程序的分支。您可以覆盖管理模板中的get_absolute_url
块,而不是覆盖object-tools
。像这样:
{% extends "admin/change_form.html" %}
{% block object-tools %}
{% if change %}{% if not is_popup %}
<ul class="object-tools">
{% block object-tools-items %}
<li>
{% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
<a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
</li>
{% if has_absolute_url %}<li><a href="{% url 'your-custom-view-here' original.pk %}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
{% endblock %}
</ul>
{% endif %}{% endif %}
{% endblock %}
将其另存为templates/admin/photologue/<modelnamehere>/change_form.html
(将<modelnamehere>
更改为您要自定义的模型)
在Django的未来版本中(我猜是1.7),你可以override the method view_on_site
做同样的事情。
答案 1 :(得分:0)
在Django文档中提出了重写get_absolute_URL(),所以它应该很好。