我只是歪着尾巴,现在有点困惑。我有一个文件夹结构:
网站>;菜单>;模板标签>;菜单\u tags.py
代码如下:
from django import template
from ..models import Menu
register = template.Library()
@register.simple_tag()
def get_menu(slug):
return Menu.objects.get(slug=slug)
然后在“我的模型”(站点>;菜单>;models.py)中:
"""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
现在当我编译时,我得到了上面的导入错误。我确信路径是正确的,但我不知道为什么它可以从模型中导入菜单。任何帮助都将不胜感激
非常感谢
您的
class Menu
定义是缩进的,因此它出现在class MenuItem
的定义中-这意味着它在models
模块中作为类不可见。删除此缩进,它应该会工作相关问题 更多 >
编程相关推荐