首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试加载‘menus.templatetags.menus_ ImportError’时引发标签:无法从'menus.models‘导入名称'Menus’

尝试加载‘menus.templatetags.menus_ ImportError’时引发标签:无法从'menus.models‘导入名称'Menus’
EN

Stack Overflow用户
提问于 2020-08-10 20:03:04
回答 1查看 60关注 0票数 0

我只是靠在摇尾巴上,现在有点困惑。我有一个文件夹结构:

站点>菜单>模板标签> menus_tags.py

代码如下:

代码语言:javascript
复制
    from django import template

    from ..models import Menu

    register = template.Library()

    @register.simple_tag()
    def get_menu(slug):
        return Menu.objects.get(slug=slug)

然后在my models (站点>菜单> models.py )中:

代码语言:javascript
复制
    """Menus models"""

    from django.db import models

    from django_extensions.db.fields import AutoSlugField
    from modelcluster.fields import ParentalKey
    from modelcluster.models import ClusterableModel

    from wagtail.admin.edit_handlers import (
        MultiFieldPanel,
        InlinePanel,
        FieldPanel, 
        PageChooserPanel
    )
    from wagtail.core.models import Orderable
    from wagtail.snippets.models import register_snippet

    class MenuItem(Orderable):
        
        link_title = models.CharField(
            blank=True,
            null=True,
            max_length=50
        )
        link_url = models.CharField(
            max_length=500,
            blank=True
        )
        link_page = models.ForeignKey(
            "wagtailcore.Page",
            null=True,
            blank=True,
            related_name="+",
            on_delete=models.CASCADE,
        )
        open_in_new_tab = models.BooleanField(default=False, blank=True)

        page = ParentalKey("Menu", related_name="menu_items")

        panels = [
            FieldPanel("link_title"),
            FieldPanel("link_url"),
            PageChooserPanel("link_page"),
            FieldPanel("open_in_new_tab")

        ]

        # @todo add properties
        # link

        @register_snippet
        class Menu(ClusterableModel):
            """The main menu clusterable model."""

            title = models.CharField(max_length=100)
            slug = AutoSlugField(populate_from="title", editable=True)

            panels = [
                MultiFieldPanel([
                    FieldPanel("title"),
                    FieldPanel("slug"),
                ], heading="Menu"),
                InlinePanel("menu_items", label="Menu Item")
            ]

            def __str__(self):
                return self.title

现在,当我编译的时候,我得到了上面的导入错误。我确信路径是正确的,但是我不知道为什么它可以从模型中导入菜单。如果能得到ANy的帮助,我们将非常感激。

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 16:18:03

您的class Menu定义是缩进的,因此它出现在class MenuItem的定义中-这意味着它作为models模块中的类不可见。去掉这个缩进,它就可以工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63339813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档