如何在 django 中创建模型下拉菜单

什雷亚什

我创建了两个模型名称类别和子类别,如果我创建一个类别名称商品,那么在此之下我可以创建子类别名称 tshirt、hoddies、shirt,所以我将类别与子类别中的外键联系起来,所以我想在哪个顶级类别将显示在所有与类别相关的子类别下,但我无法实现,我试过这个

我的模型.py

class Categories(models.Model):
    name = models.CharField(max_length=100, blank=False)
    joined_date = models.DateTimeField(default=timezone.now,editable=False)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

class Subcategories(models.Model):
    categories = models.ForeignKey(Categories, on_delete=models.CASCADE)
    name = models.CharField(max_length=200, blank=False)
    joined_date = models.DateTimeField(default=timezone.now,editable=False)
    update_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name

和我的 views.py

class home(View):
    def get(self, request,):
        category_list = Categories.objects.all()
        return render (request, 'home.html', {'category_list': category_list }) 

和我的 html

<ul class="navbar-nav m-auto">
              {% for category in category_list  %}
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle category" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                  {{ category.name }}
                </a>
                <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
                  <li><a class="dropdown-item text-white" href="#"></a></li>
                </ul>
              </li>
              {% endfor %}

我的网址.py

path('',home.as_view(),name='home' ),

它的作用是加载类别名称但无法在下拉菜单下添加子类别名称

这是你更好地理解的图片

想以这种方式实现

穆罕默德·哈姆扎

尝试related_name = our_categories在类别中设置外键,然后在 html 文件集中:

<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
      {% for item in category.our_categories.all %} 
            <li><a class="dropdown-item text-white" href="#"></a> {item.name} </li>
      {% endfor %}
</ul>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章