2012-03-20 72 views
2

我有这个问题:假设你有一个博客应用程序,并且你想显示所有创建的帖子。但是,您的帖子可以是“粘性”或“精选”,必须先显示,并且必须位于不同的html“块”中。也许这不是最好的例子,但毕竟是我需要的。Django:For循环标签显示不同的信息

因此,该模式很简单:

class Post(models.Model): 
    title = models.CharField() 
    content = models.TextField() 
    featured = models.BooleanField(default=False) 
    created = models.DateTimeField(auto_now=False, auto_now_add=True) 
    class Meta: 
    ordering = ['-featured','-created'] 

在视图我只是查询所有的职位,并在模板中显示它:

def my_view(request): 
    return render_to_response('template.html',{'posts':Post.objects.all()}) 

现在的问题是在我模板,我想有作为的结果,这是什么:

<html> 
    <div class='featured-posts'> 
    <ul> 
     <li> A Featured post</li> 
    </ul> 
    </div> 
    <div class='not-featured-posts'> 
    <ul> 
     <li> A NON Featured post</li> 
    </ul> 
    </div> 
</html> 

我能做些什么?我在想,也许我可以抓住这些分开的,这样说:

return render_to_response('template.html',{ 
    'featured':Post.objects.filter(featured=True), 
    'non_featured':Post.objects.filter(featured=False) 
}) 

但我真的不喜欢这种做法,是否有任何“基于模板的”解决方案?

Thx!

回答

5

Regroupfeatured字段中。

+0

这就是它!真的很简单!不知道我是如何错过它的。谢谢Ignacio。 – santiagobasulto 2012-03-20 01:13:56

+0

@santiagobasulto那么为什么你不接受答案? – neoascetic 2012-03-20 02:02:50

+1

Becouse我需要再等3分钟,然后去吃晚饭。不,我做了。现在我* – santiagobasulto 2012-03-20 02:58:39