在我的应用程序中,我使用django-photologue (第3部分应用程序),在它的默认配置中,“现场查看”管理按钮指向它的模板。
我读过“现场查看”按钮使用get_absolute_url()模型函数来实现其行为。
我需要更改网址后面的“查看现场”按钮。我需要重写get_absolute_url()还是编辑其他东西??
提前谢谢。
发布于 2014-01-13 17:41:18
如果你能避免的话,你不应该改变第三方应用的文件,因为你本质上需要维护应用的一个分支。您可以在管理模板中重写object-tools块,而不是覆盖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)中,您可以使用view_on_site来做同样的事情。
发布于 2014-01-13 17:25:58
重写get_absolute_URL()是在Django文档中提出的,因此应该更好。
请参阅:其他模型实例方法
https://stackoverflow.com/questions/21097309
复制相似问题