【发布时间】:2011-03-02 09:56:28
【问题描述】:
在绞尽脑汁好几天之后,我只是希望有人能指出我正确的方法。 我有 4 个模型:页面、元素、样式和帖子。
这是我的简单 models.py/admin.py 摘录:http://pastebin.com/uSHrG0p2
两句话:
一个元素引用 1 个样式和 1 个帖子(2 个 FK)。
一个页面可以引用很多元素,元素可以被很多页面引用(M2M)。
在页面实例的管理站点上,我将 M2M 关系包含为“内联”。这样我就有多行来选择元素实例。 一行看起来像:[My Post A with My Style X][V]
我想要的是用 2 个下拉列表替换那个下拉列表。一个包含所有 Post 实例,一个包含所有 Style 实例(就地创建 Element 实例)。这样一行看起来类似于 Element 管理站点:[My Post A][V] [My Style X][V]
听起来很简单,但在阅读和试用 ModelForms、ModelAdmins、Formsets 等 2 天后,我完全迷失了方向。 如果没有 Django 管理功能中的自定义视图/表单,我可以这样做吗?
我的一种方法是像这样从 PageAdminForm 访问 Post/Style 实例,尝试从中手动创建表单小部件...但未能这样做:
p = Page.objects.get(pk=1)
f = PageAdminForm(instance=p)
f.base_fields['elements'].choices.queryset[0].post
有什么建议或提示我需要走哪条路吗? 感谢您的宝贵时间!
【问题讨论】:
标签: django many-to-many admin inline-formset