我只是靠在摇尾巴上,现在有点困惑。我有一个文件夹结构:
站点>菜单>模板标签> menus_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)然后在my models (站点>菜单> 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现在,当我编译的时候,我得到了上面的导入错误。我确信路径是正确的,但是我不知道为什么它可以从模型中导入菜单。如果能得到ANy的帮助,我们将非常感激。
非常感谢
发布于 2020-08-11 16:18:03
您的class Menu定义是缩进的,因此它出现在class MenuItem的定义中-这意味着它作为models模块中的类不可见。去掉这个缩进,它就可以工作了。
https://stackoverflow.com/questions/63339813
复制相似问题