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%}