Python 如何根据它过滤故事';s归属标签
我有两个模型:新闻和分类,在新闻中我有分类的外键。我知道如何在单个模板中显示具有相同类别的新闻。但是,在我的主页上,我试图显示每个类别的特色新闻。这就是我遇到的问题。 这是我的模特Python 如何根据它过滤故事';s归属标签,python,django,Python,Django,我有两个模型:新闻和分类,在新闻中我有分类的外键。我知道如何在单个模板中显示具有相同类别的新闻。但是,在我的主页上,我试图显示每个类别的特色新闻。这就是我遇到的问题。 这是我的模特 class News(models.Model): title = models.CharField(max_length=120) content = models.TextField() category = models.ForeignKey("Tag") active = mo
class News(models.Model):
title = models.CharField(max_length=120)
content = models.TextField()
category = models.ForeignKey("Tag")
active = models.BooleanField(default=True)
featured = models.BooleanField(default=False)
top = models.BooleanField(default=False)
slug = models.CharField(max_length=255, unique=True)
featuredInCat = models.BooleanField(default=False)
objects = StoryManager()
class NewsQueryset(models.query.QuerySet):
def active(self):
return self.filter(active=True)
def featuredInCat(self):
return self.filter(featuredInCat=True)
class NewsManager(models.Manager):
def get_queryset(self):
return NewsQueryset(self.model, using=self._db)
def get_featuredInCat(self):
return self.get_queryset().active().featuredInCat()
def all(self):
return self.get_queryset().active()
class Category(models.Model):
title = models.CharField(max_length=120)
description = models.TextField(max_length=5000, null=True, blank=True)
In views.py
def category_list(request):
categoryList = NewsCategory.objects.all()
featuredInCat = News.objects.get_featuredInCat()
context = {
"featuredInCat":featuredInCat
"categoryList":categoryList,
}
return render(request,"news/category_list.html", context)
在我的模板中
{% for category in categoryList %}
<div class='col-sm-4'>
<div id="container">{{category.title}}</h1>
<ul>
{% for x in featuredInCat %}
<a href='{{ x.get_absolute_url }}'><li class="unique">{{x.title}}</li></a>
{% endfor %}
</ul>
</div>
<hr>
</div>
{% endfor %}
{%用于categoryList%中的类别]
{{category.title}}
{featuredInCat%中x的%s}
{%endfor%}
{%endfor%}
然后显示每个类别中的featuredInCat,featuredInCat应仅显示在其类别部分中。
如何修复此问题?您可以更改for循环以迭代正确的对象
{% for x in category.news_set.get_featuredInCat %}
您不再需要上下文变量了看看django。您需要将模板更改为以下内容:
{% regroup featuredInCat by category as news_list %}
<ul>
{% for news in news_list %}
<li>{{ news.grouper.title }}
<ul>
{% for item in news.list %}
<li>{{ item.title }}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
{%n按类别将featuredInCat重新分组为新闻\列表%}
{新闻列表%中的新闻为%}
- {{news.gropper.title}
{news.list%中项目的%s}
- {{item.title}
{%endfor%}
{%endfor%}