3

我想为网站的不同页面创建多个子菜单。因此,我创建了一个名为“子菜单”的片段。

子菜单包含一个名为 submenu_items 的对象。在网页上,这转化为顶级导航。然后,每个 submenu_item 都有一个 dropdown_items。这样,在每个顶级链接下,我可以创建一个包含更多链接的下拉列表。

问题:
每当我创建一个新的 submenu_item 时,它都会创建 3 个 dropdown_item(下图中的示例)。我希望它能够提供“添加下拉项目”按钮。然后,我会根据需要一次创建一个。该代码似乎默认生成三个。

我尝试删除它们,保存片段。但是当我点击片段时,它们又出现了。我尝试重新创建整个模型并重新迁移所有内容。我仍然遇到同样的问题。

有人可以指出我可能做错了什么吗?我缺少的嵌套元素有一些规则吗?

在此处输入图像描述

@register_snippet
class Submenu(ClusterableModel):
    text = models.CharField(max_length=255)
    subsite_url = models.CharField(max_length=255)

    panels = [
        FieldPanel('text'),
        FieldPanel('subsite_url'),
        InlinePanel('submenu_items', label="Submenu Items"),
    ]

    def __str__(self):
        return self.text

class SubmenuItem(ClusterableModel, Orderable):
    page = ParentalKey(Submenu, on_delete=models.CASCADE, related_name='submenu_items')

    menu_item = models.CharField(blank=True, max_length=250)
    internal_url = models.CharField(blank=True, max_length=250)

    panels = [
        FieldPanel('menu_item'),
        FieldPanel('internal_url'),
        InlinePanel('dropdown_items', label="Dropdown Items"),
    ]    

class DropdownItem(Orderable):
    page = ParentalKey(SubmenuItem, on_delete=models.CASCADE, related_name='dropdown_items')

    menu_item = models.CharField(blank=True, max_length=250)
    internal_url = models.CharField(blank=True, max_length=250)

    panels = [
        FieldPanel('menu_item'),
        FieldPanel('internal_url'),
    ]
4

1 回答 1

0

DropdownItem 类的目的是什么?我相信 SubmenuItem 和 DropdownItem 是多余的。如果您回到 wagtail 教程并查看图库图片示例,您会找到答案。

http://docs.wagtail.io/en/v2.0/getting_started/tutorial.html#images

作者创建了继承 Orderable 的 BlogPageGalleryImage。您可以对 SubmenuItem 使用相同的 ParentalKey 结构。

于 2019-05-20T06:32:39.670 回答