1

与我之前的问题类似,我正在尝试在 ModelAdmin 中使用相关模型。(这是因为我希望它在两个管理视图中都可用。)但这一次,我使用的是新的ParentalManyToManyField或只是普通的ManyToManyField,这似乎把事情搞砸了。

我写了以下结构:

class B(Model): # or Orderable
    ...
    edit_handler = TabbedInterface([
        ObjectList([
            FieldPanel('aes', widget=CheckboxSelectMultiple),
        ], heading=_('Aes'),
        ),
    ])

class A(ClusterableModel):
    ...
    bees = ParentalManyToManyField(
        B,
        related_name='aes',
        blank=True,
    )
    ...
    edit_handler = TabbedInterface([
        ObjectList([
            FieldPanel('bees', widget=CheckboxSelectMultiple),
        ], heading=_('Bees'),
        ),
    ])

尝试访问该页面时,我收到Field Error

Unknown field(s) (aes) specified for B

我正在尝试做的事情是不可能的,还是我忘记了一步?

4

1 回答 1

2

需要在ParentalManyToManyField父模型上定义(我假设这里是 B - 即 modeladmin 接口设置为编辑 B 的实例,其中有几个 A 链接到它)并由其字段名称而不是相关名称引用. 此外,它应该是定义为 ClusterableModel 的父模型,而不是子模型:

class B(ClusterableModel):
    aes = ParentalManyToManyField('A', blank=True)

    edit_handler = TabbedInterface([
        ObjectList([
            FieldPanel('aes', widget=CheckboxSelectMultiple),
        ], heading=_('Aes')),
    ])

class A(Model):  # doesn't need to be Orderable, because M2M relations don't specify an order
    ...
于 2017-04-03T16:04:03.203 回答