2010-10-30 89 views
0

我有点困惑,为什么这种功能不是在管理员默认的,但也许有人可以给我一些如何去解决这个问题的暗示。django管理内联(和嵌套内联):如何获得此功能?

我有一个项目应用程序,跟踪项目,并将通过管理编辑。每个项目都有许多与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后端是必要的。

感谢

回答

0

我实现了这样的事情在一个应用程序一次,但由于Django的管理犯规支持嵌套内联(我指的是内联内内联),我也跟着稍微不同的方法。用例是你有一个发票(有几个内联属性),你有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' 

这给你,把你带到另一个列表视图列表视图中的链接,而是通过外键过滤。现在,您可以为这两种模型提供内联,并轻松访问相关模型。

+0

我不太明白这一点。这是否将收据清单添加到所有发票的更改清单或发票的实际管理页面?我只是想要在发票管理中列出所有相关收据的列表以及将您带到收据管理页面的链接(将正确的发票作为外键选中) – 2010-11-09 21:14:43

+0

由于问了这个问题:这是我经常采用的方法,其中一个最可实施的 – 2012-01-21 08:48:35

+0

刚刚看到您先前的评论。我假设你已经知道了:) – zsquare 2012-01-21 18:39:26