【发布时间】:2019-12-12 21:05:34
【问题描述】:
我有一个类别模型和与这些类别相关的帖子列表,还有一些具有相同类别名称的帖子,但是当我想在模板中制作类别部分列表时, 它显示重复的类别名称,因为它与以下帖子相关:
食物, 食物, 沙漠, 风格, 沙漠, 但我想喜欢:
食物, 沙漠, 风格, 这是我的代码:
views.py
class ListCategory(ListView):
model = Post
paginate_by = 2
template_name = 'shit.html'
context_object_name = 'queryset'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
cate = Post.objects.all()
context['cate'] = cate
return context
models.py
class Category(models.Model):
title = models.CharField(max_length=20)
thumbnail = models.ImageField()
detail = models.TextField()
featured = models.BooleanField(default=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-category', kwargs={
'pk': self.pk
})
class Post(models.Model):
title = models.CharField(max_length=100)
overview = models.TextField()
featured = models.BooleanField(default=True)
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Author,on_delete=models.CASCADE)
thumbnail = models.ImageField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
tags = TaggableManager()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={
'pk': self.pk
})
模板
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class="sidebar-box ftco-animate">
<ul class="categories">
<h3 class="heading mb-4">Categories</h3>
{% for cat in cate %}
<li><a href="{% url 'post-category' cat.category.pk %}">{{cat.category}}<span>(12)</span></a></li>
{% endfor %}
</ul>
</div>
{% endblock content %}
非常感谢!
【问题讨论】:
-
那么您想根据类别分组您的
Post对象吗? -
我想在我的模板中列出唯一的类别部分..正如您所看到的,当我使用 for 循环获取所有类别但由于外键而显示重复名称时。但我想要类别的唯一名称如何拥有该功能
-
那你为什么不遍历
Category来获取它们呢?如果您想根据类别显示Posts,请告诉我。 -
是的,兄弟!我怎样才能做到这一点?是否可以通过 url 获得基于类别的特定帖子?正如我现在得到的那样
标签: python django django-models django-templates django-views