我有点困惑为什么这种功能在管理员中不是默认的,但也许有人可以给我一些关于如何去做的事情。
我有一个项目应用程序,可以跟踪项目,并通过管理员进行编辑。每个项目都有许多与ForeignKey相关的模型(链接,平面图,视频,图像等),可以在项目管理员中作为内联放置。
(一个或两个模型具有嵌套的内联,因此它们不会显示在管理员(this和this票据处理中))
我没有能够在项目管理中内联编辑这些模型(这会变得混乱且难以使用),我希望能够列出该相关模型的所有当前实例,并为每个模型添加简单的添加/编辑按钮这会打开一个带有该模型形式的弹出窗口。
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 :(得分: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过滤。现在,您可以为两个模型创建内联,并轻松访问相关模型。