【问题标题】:Display link to full change form for object in django admin在 django admin 中显示对象的完整更改表单的链接
【发布时间】:2011-02-17 22:53:26
【问题描述】:

由于尚不支持嵌套内联,我想知道如何显示指向相关对象的链接作为替代方案。前几天我遇到了一个问题,其中包含一个应用程序的链接,但我似乎再也找不到它了。

这是我正在做的事情:
我有一个包含姓名、地址等的经理模型。

我有一个具有内联且与管理器模型相关的属性模型。

我希望管理器模型能够在更改表单中为与其相关的每个属性显示一个链接。

这是可以做到的吗?

【问题讨论】:

    标签: django django-models django-admin


    【解决方案1】:

    当然,您可以覆盖您的更改视图。 http://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.change_view

    从真正的管理模板目录中复制模板并将其放置在您喜欢的任何位置(因为您可以使用change_form_template 指向它,并添加一些额外的内容以显示。

    我经常这样做。

    class MyModelAdmin(admin.ModelAdmin):
        change_form_template = 'myapp/new_change_form.html'
    
        def change_view(self, request, object_id, extra_context=None):
            properties = Manager.objects.get(id=object_id).property_set.all()
            extra_context = { 'properties':properties }
            super(MyModelAdmin, self).change_view(request, object_id, extra_context)
    

    在管理模板中找到一个位置来添加一些您自己的 HTML。

    <ul>
    {% for property in properties %}
        <li>
            <a href="{% url admin:myapp_manager_change property.id %}">Edit {{ property }}</a>
        </li>
    {% endfor %}
    </ul>
    

    【讨论】:

    • 谢谢。我希望我能找到那个应用程序,看看它是否可以工作。但是这种方法也很有效。
    • 是的,嵌套内联听起来很整洁。 :)
    猜你喜欢
    • 2011-04-29
    • 2011-02-20
    • 1970-01-01
    • 2010-11-13
    • 2016-09-29
    • 2015-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多