型号:
total used free shared buffers cached
Mem: 23922 23348 573 2993 2899 13761
-/+ buffers/cache: 6687 17234
Swap: 7999 1033 6966
查看:
class Category(models.Model):
name = models.CharField(max_length=20)
slug = models.SlugField(max_length=200, unique=True )
def __unicode__(self):
return self.name
class Post(models.Model):
title = models.CharField(max_length = 100)
content = models.TextField(max_length = 600, default = 'cool' )
date_of_creating = models.DateTimeField(auto_now=False, auto_now_add=True)
image = models.ImageField(
upload_to=upload_location,
null=True,
blank=True,
height_field="height_field",
width_field="width_field"
)
height_field = models.IntegerField(default=0)
width_field = models.IntegerField(default=0)
category = models.ForeignKey('Category')
slug = models.SlugField(unique=True, blank=False)
def __unicode__(self):
return self.title
我不知道我应该在模板中写什么来按类别过滤我的帖子。 我需要选择类别并显示此类别的帖子。如何按类别过滤?
答案 0 :(得分:1)
我相信您在询问如何按类别排列显示您的帖子?如果这就是你所追求的,你的模板应该是这样的:
template.html
{% if category %}
{% if post %}
{% for c in category %}
{% for p in post %}
{% if p.category == c %}
<div>{{ p.title }}</div> <!-- and whatever else you want to display and however you want to style it I am just giving an example -->
{% endif %}
{% endfor %}
{% endfor %}
{% endif %}
{% endif %}
根据您在视图中执行的操作,这是按类别显示的一种方法。请注意,有更好的方法可以遍历数据并对其进行分组,但是您要求这样做。所以我希望这会帮助你!
编辑1
再次阅读你的问题后(我相信有一个编辑)我看到你问的是如何显示所选类别的帖子。我假设,因为您有一个slug
所选的类别在URL中。所以在视图中确实选择了正确的posts
。因此,为了显示所选category
的帖子,您只需在模板中执行此操作:
{% if post %}
{% for p in post %}
<div>{{ p.title }}</div> <!-- and whatever else you want to display and however you want to style it I am just giving an example -->
{% endfor %}
{% endif %}
希望这有帮助!
答案 1 :(得分:1)
您可以尝试使用Ajax按类别(Tutorial here)进行过滤。
创建一个包含所有类别的选择框,然后在选择新选项时,触发Ajax查询以选择该类别中的所有帖子。