如何列出与之相关的类别和论坛? Django的

问题描述 投票:0回答:1

模型

class Category(models.Model):
    class Meta():
        verbose_name_plural = "Categories"

    cat_name = models.CharField(max_length=50)
    description = models.TextField()

    def get_forums(self):
        get_forum = Forum.objects.filter(category=self)
        return get_forum

    def __str__(self):
        return f"{self.cat_name}"

class Forum(models.Model):
    class Meta():
        verbose_name_plural = "Forums"

    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name="forums")
    parent = models.ForeignKey('self', blank=True, null=True, on_delete=models.CASCADE)
    forum_name = models.CharField(max_length=50)
    description = models.TextField()

    def __str__(self):
        return f"{self.forum_name}"

查看

class Home(ListView):
    model = Category
    template_name = 'forums/index.html'
    context_object_name = 'category'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['cat'] = Category.objects.all()
        return context

HTML

{% block content %}
{% for cat in category %}
    <div class="row">
        <div class="bg-success rounded-top border border-dark" style="width:100%; padding-left:8px;">
                {{cat.cat_name}}
        </div>
    </div>

    <div class="row">
        <div class="bg-secondary border border-dark" style="width:100%; padding-left:16px;">
           Forums_Go_Here
        </div>
    </div>
{% endfor %}
{% endblock content %}

我正在尝试获得一个主页,我可以在其中列出我的类别并在这些类别中显示论坛。我的模板正在运行一个循环遍历所有类别的for循环。在shell中,我能够使用:Category.objects.get(pk = 2).get_forums()命令获取论坛。但这将它限制在一个类别。

django
1个回答
0
投票

您可以使用相关名称,无需使用其他方法:

{% block content %}
{% for cat in category %}
    <div class="row">
        <div class="bg-success rounded-top border border-dark" style="width:100%; padding-left:8px;">
                {{cat.cat_name}}
        </div>
    </div>
    {% for forum in cat.forums.all %}
        <div class="row">
            <div class="bg-secondary border border-dark" style="width:100%; padding-left:16px;">
               {{forum.forum_name}}
            </div>
        </div>
    {% endfor%}
{% endfor %}
{% endblock content %}

你也有错误:

context['category'] = Category.objects.all()

如果你想在模板中使用category来访问它,请将其放在那里,而不是cat

© www.soinside.com 2019 - 2024. All rights reserved.