django admin inlines(和嵌套的inlines):我怎样才能获得这个功能?

时间:2010-10-30 16:06:49

标签: django django-admin

我有点困惑为什么这种功能在管理员中不是默认的,但也许有人可以给我一些关于如何去做的事情。

我有一个项目应用程序,可以跟踪项目,并通过管理员进行编辑。每个项目都有许多与ForeignKey相关的模型(链接,平面图,视频,图像等),可以在项目管理员中作为内联放置。

(一个或两个模型具有嵌套的内联,因此它们不会显示在管理员(thisthis票据处理中))

我没有能够在项目管理中内联编辑这些模型(这会变得混乱且难以使用),我希望能够列出该相关模型的所有当前实例,并为每个模型添加简单的添加/编辑按钮这会打开一个带有该模型形式的弹出窗口。

Project Admin:
    - Normal Fields

    - Links:
        -Link 1 (edit)
        -Link 2 (edit)
        + add link <- popup


    - Images:
        -Image 1 (edit)
        -Image 2 (edit)
        + add image <- popup
等等。我该怎么写这个?我只需要为管理面板的一个部分/模型执行此操作,因此我不认为编写自己的Crud后端是必要的。

由于

1 个答案:

答案 0 :(得分:0)

我在应用程序中实现了一次这样的东西,但是由于django-admin不支持嵌套内联(我的意思是内联中的内联),我采用了稍微不同的方法。用例是您有一张发票(带有一些内联属性),并且您有一个reciepts(再次使用内联属性)。收据有发票模型的外键(基本上收据是发票的一部分付款)。

我是通过在发票清单视图中添加一个字段来实现的,该字段链接到已过滤的收款列表视图。

所以在发票管理员中,会有:

def admin_view_receipts(self, object):
    url = urlresolvers.reverse('admin:invoice_%s_changelist'%'receipt')
    params = urllib.urlencode({'invoice__id__exact': object.id})
    return '<a href="%s?%s">Receipts</a>' % (url, params)
admin_view_receipts.allow_tags = True
admin_view_receipts.short_description = 'Receipts'

这会在列表视图中为您提供一个链接,该链接将您带到另一个列表视图,但是由foreignkey过滤。现在,您可以为两个模型创建内联,并轻松访问相关模型。