2011-03-02 133 views
0

几天后,我只是希望有人能指点我正确的方法。 我有4个型号:页面,元素,样式和发布。Django管理员:内联2个外键Many2Many模型

这里是我的simplyfied models.py/admin.py摘录:http://pastebin.com/uSHrG0p2

在2句:

一个元素引用1种样式和1个帖子(2个FKS)。

一个页面可以引用很多元素,元素可以被多个页面引用(M2M)。

在页面实例的管理网站上,我将M2M关系作为“内联”。这样我有多行来选择元素实例。 一排看起来像:[我的贴子A与我的风格X] [V]

我想要的是用2个下拉菜单替换一个下拉菜单。一个具有Post的所有实例,另一个具有Style的所有实例(就地创建元素实例)。因此,一行看起来类似于元素管理网站:[我的帖子A] [V] [我的风格X] [V]

听起来很容易,但我完全失去了阅读和实验2天后使用ModelForms,ModelAdmins,Formsets ...。 我可以在Django管理功能中没有自定义视图/表单吗?

我的一个方法是从这样的PageAdminForm访问邮报/风格的情况下,试图从一个手动创建一个表单控件......但未能如愿:

p = Page.objects.get(pk=1) 
f = PageAdminForm(instance=p) 
f.base_fields['elements'].choices.queryset[0].post 

任何意见或提示我需要走哪条路? 谢谢你的时间!

回答

1

我正是我与元第3 ForeignKey的去除M2M领域和链接元素添加到页面后想:

class Element(models.Model): 
    page = models.ForeignKey(Page)   
    post = models.ForeignKey(Post) 
    style = models.ForeignKey(Style) 

其实非M2M连接更有意义我的应用程序后,所有。

给自己的备忘录:重新思考模型关系,然后尝试智取Django :-(