django通用视图:类别中的详细信息

时间:2018-10-10 16:23:28

标签: python django

我使用通用视图列出我的类别。 我还要显示属于这些类别的每个项目的标题。 我了解ListView和DetailView的原理,但是列表中的一些细节呢?

这是我的不同文件:

Models.py

class categories(models.Model):
    name = models.CharField(max_length=50,unique=True)
    slug = models.SlugField(max_length=100,unique=True)

    def __str__(self):
        return self.name

class details(models.Model):
   title = models.CharField(max_length=100)
   author = models.CharField(max_length=42)
   category = models.ForeignKey('categories', on_delete=models.CASCADE)

    def __str__(self):
        return self.title

Views.py

class IndexView(generic.ListView):
    model = categories
    context_object_name = "list_categories"
    template_name='show/index.html'

Urls.py

urlpatterns = [
path('', views.IndexView.as_view(), name='index'),
]

Index.html

{% load static %}

<p>These is a list of categories</p>

{% for category in list_categories %}
    <div class="article">
       <h3>{{ category.name }}</h3>

        {% for title in category.detail %}
            <p> {{title}} </p>
        {% endfor %}
    </div>
{% endfor %}

1 个答案:

答案 0 :(得分:1)

您需要首先反向调用具有相关名称(即“类别”)的details

{% load staticfiles %}

<p>These is a list of categories</p>

{% for category in list_categories %}
    <div class="article">
       <h3>{{ category.name }}</h3>

        {% for detail in category.categories.all %}
            <p> {{detail.title}} </p>
        {% endfor %}
    </div>

请注意,在全部反向之后,必须使用all,因为可能存在多个反向关系。

下面仍然有任何疑问。