【发布时间】:2020-05-18 04:05:06
【问题描述】:
几天前我开始学习 django 并尝试建立我的第一个博客。
我的问题是我决定为我的类别(副标题)添加一个额外的字段,我想在我的模板中添加一个字段,但不知道该怎么做。
我的models.py
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=20)
subheading = models.CharField(max_length=160)
def __str__(self):
return self.name
class Post(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
link = models.TextField()
categories = models.ManyToManyField("Category", related_name="posts")
def __str__(self):
return self.title
views.py
from django.shortcuts import render
from blog.models import Post, Category
def blog_category(request, category):
posts = Post.objects.filter(
categories__name__contains=category
).order_by(
'title'
)
context = {
"category": category,
"posts": posts
}
return render(request, "blog_category.html", context)
category.name 或 category.subheading 在模板中(由教师)显示的唯一方式是在 {% for post in posts %} {% endfor % }:
{% for post in posts %}
{% for category in post.categories.all %}
{{ category.subheading }}
{% endfor %}
{% endfor %}
在这种情况下,如果类别页面上有 10 个帖子,则副标题会重复 10 次。我只需要打印 1 来描述类别。
有没有办法在 {% for post in posts %} 之外调用 category.subheading ?或者以某种方式只打印一个结果。
附言对不起我的初级英语水平。
【问题讨论】: