在Django中从数据库中获取数据时子菜单无法正常显示

u3r8eeie  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(95)

bounty还有4小时到期。回答此问题可获得+50声望奖励。Mukoro Godwin希望引起更多关注此问题。

日安所有我想创建一个动态菜单与子菜单填充菜单从数据库。我创建了两个与子菜单相关的主菜单表.
主菜单被填充并且没有正确地播放,但是子菜单被填充但是没有正确地下拉,子菜单保持在彼此的顶部。
但是,如果我手动编写主菜单和子菜单,它们都能正常工作。我做错了什么?谢谢你抽出时间

我想要的x1c 0d1x我得到的

我的代码- Django模板

<div class="collapse navbar-collapse sub-menu-bar" id="navbarSupportedContent">
                            <ul class="navbar-nav mr-auto">
                                {% for item in mainmenu %}
                                <li class="nav-item">
                                    <a href="{{ item.menulink }}">{{ item.name }}</a>
                                    {% for submenu in item.submenu.all %}
                                        <ul class="sub-menu">
                                            <li>
                                                <a href="{{ submenu.menulink }}">{{ submenu.name }}</a>
                                            </li>
                                        </ul>
                                    {% endfor%}
                                </li>
                                {% endfor %}
                            </ul>
                        </div>

字符串

我的自定义上下文处理器

from setup.models import Setup, Mainmenu, Submenu

def setup(request):
    setup = Setup.objects.first()
    return {'organisation': setup}

def mainmenu(request):
    mainmenu = Mainmenu.objects.order_by("order").filter(menutype="main")
    return {'mainmenu': mainmenu}

def submenu(request):
    submenu = Submenu.objects.order_by("order").filter(menutype="submenu")
    return {'submenu': submenu}`

 - My Database Table

 

class Mainmenu(models.Model):
    name = models.CharField(_("Menu Name"), max_length=256, blank=True, null=True, unique=False)
    menulink = models.CharField(_("Menu Link"), max_length=512, blank=True, null=True, help_text="Enter menu link like this, <code>https://uidc.com.ng/page/display/about-us/</code>")
    order = models.CharField(_("Menu Order"), max_length=512, blank=True, null=True)
    is_active = models.CharField(_("Is Active"), max_length=256, blank=True, null=True)
    menutype = models.CharField(_("Menu Type"), max_length=256)
    slug = models.SlugField(_("Slug"), max_length=256, blank=True, null=True, unique=False)
    datecreated = models.DateField(_("Date Created"), auto_now=True)

    class Meta:
        verbose_name = _("Mainmenu")
        verbose_name_plural = _("Mainmenus")

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super().save(*args, **kwargs)

class Submenu(models.Model):
    name = models.CharField(_("Submenu Name"), max_length=256, blank=True, null=True)
    mainmenu = models.ForeignKey(
        Mainmenu, verbose_name=_("Main Menu"), on_delete=models.CASCADE, related_name="submenu"
    )
    menulink = models.CharField(_("Submenu Link"), max_length=512, blank=True, null=True)
    order = models.CharField(_("Submenu Order"), max_length=512, blank=True, null=True)
    is_active = models.CharField(_("Is Active"), max_length=256, blank=True, null=True)
    menutype = models.CharField(_("Submenu Type"), max_length=256, blank=True, null=True)
    slug = models.SlugField(_("Slug"), max_length=256, blank=True, null=True, unique=True)
    datecreated = models.DateField(_("Date Created"), auto_now=True)

    class Meta:
        verbose_name = _("Submenu")
        verbose_name_plural = _("Submenus")

8ehkhllq

8ehkhllq1#

谢谢大家,我发现了我的错误,我的代码现在工作正常。我将子菜单的迭代放置在错误的位置,即覆盖unoderlist <ul>标签,而它应该只覆盖列表<li>标签。这是一个HTML问题。
请参阅下面的代码。谢谢大家。

<div class="collapse navbar-collapse sub-menu-bar" id="navbarSupportedContent">
                                <ul class="navbar-nav mr-auto">
                                    {% for item in mainmenu %}
                                    <li class="nav-item">
                                        <a href="{{ item.menulink }}">{{ item.name }}</a>
                                            <ul class="sub-menu">
                                                {% for submenu in item.submenu.all %}
                                                <li><a href="{{ submenu.menulink }}">{{ submenu.name }}</a></li>
                                                {% endfor%}
                                            </ul>
                                    </li>
                                    {% endfor %}
                                </ul>
                            </div>

字符串

相关问题