Django:如何更改管理按钮的“网站视图”网址

时间:2014-01-13 17:14:35

标签: python django

在我的应用程序中,我使用的是django-photologue(第3部分应用程序),在默认配置中,“在网站上查看”管理按钮指向其模板。

我读过“在网站上查看”按钮使用get_absolute_url()模型函数来实现其行为。

我需要更改“在网站上查看”按钮后面的网址。 我是否需要覆盖get_absolute_url()或编辑其他内容?

提前致谢。

2 个答案:

答案 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(),所以它应该很好。

请参阅:Other model instance methods