Django admin:包含2个外键的多个模型的内联

Django admin:包含2个外键的多个模型的内联,django,many-to-many,admin,inline-formset,Django,Many To Many,Admin,Inline Formset,在绞尽脑汁数天后,我只希望有人能给我指出正确的方法。 我有4个模型:页面、元素、样式和帖子 以下是我的simplyfied models.py/admin.py摘录: 用两句话: 一个图元引用1个样式和1个立柱(2个FK) 一个页面可以引用多个元素,元素可以被多个页面引用(M2M) 在页面实例的管理站点上,我将M2M关系包含为“inline”。所以我有多行来选择元素实例。 一行看起来像:[我的文章A和我的风格X][V] 我想要的是用两个下拉列表替换一个下拉列表。一个包含所有Post实例,另一个包

在绞尽脑汁数天后,我只希望有人能给我指出正确的方法。 我有4个模型:页面、元素、样式和帖子

以下是我的simplyfied models.py/admin.py摘录:

用两句话:

一个图元引用1个样式和1个立柱(2个FK)

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

在页面实例的管理站点上,我将M2M关系包含为“inline”。所以我有多行来选择元素实例。 一行看起来像:[我的文章A和我的风格X][V]

我想要的是用两个下拉列表替换一个下拉列表。一个包含所有Post实例,另一个包含所有Style实例(在位创建图元实例)。因此,这一行看起来类似于元素管理站点:[My Post A][V][My Style X][V]

听起来很简单,但在阅读并用ModelForms、ModelAdmins、Formsets等进行了2天的实验之后,我完全迷失了方向。 没有Django管理功能中的自定义视图/表单,我可以这样做吗

我的一种方法是从PageAdminForm访问Post/样式实例,就像这样,尝试从它手动创建一个表单小部件。。。但未能做到这一点:

p = Page.objects.get(pk=1)
f = PageAdminForm(instance=p)
f.base_fields['elements'].choices.queryset[0].post
有什么建议或提示我该走哪条路吗?
谢谢你抽出时间

在删除M2M字段并将元素链接到带有第三个ForeignKey-in元素的页面后,我得到了我想要的东西:

class Element(models.Model):
    page = models.ForeignKey(Page)        
    post = models.ForeignKey(Post)
    style = models.ForeignKey(Style)
实际上,非M2M链接毕竟对我的应用程序更有意义

自我提醒:在试图智胜Django之前,重新思考模型关系:-(