我无法发布图片,因为我是新手,所以这里是what I want的链接。
所以,我左边有模型,我想要右边的视图 截至目前,我正在遍历我感兴趣的每个线程。模板代码:
{% for thread in threadlist %}
{% for post in thread.postlist %}
...
型号代码:
class Thread (models.Model):
...
def postlist(self):
posts = list(self.post_set.all())
return [posts.pop(0)] + posts[-2:]
必须有一种方法可以通过加入列或其他东西来减少查询。我是Python / Django的新手,我真的不知道如何做到这一点。
答案 0 :(得分:2)
您可以使用select_related。这将使查询跟随连接,因此您最终得到一个较大的查询,而不是许多较小的查询。
文档非常详尽。
答案 1 :(得分:0)
查看documentation你should使用post_set.all()。 我很确定查询是由django在幕后加入的,而且它很懒。 这意味着它在需要之前不会被加载。
来自文档:
QuerySets很懒 - 创建QuerySet的行为不涉及任何数据库活动。您可以整天将过滤器堆叠在一起,在评估QuerySet之前,Django实际上不会运行查询。