Django注释-更有效的方法?

莱纳斯

在基于类的ListView中,我想用注释数量注释每个Post(此方法有效)

def get_context_data(self, *args, **kwargs):
    context = super().get_context_data(*args, **kwargs)


    context['approved_comments'] = Comment.objects.values('post_id').annotate(c_count=Count('post_id')).filter(approved=True)
    return context

在我的模板中,我执行以下操作(感觉效率很低)

{% for comment in approved_comments %}
    {% if post.id == comment.post_id %}
        {{comment.c_count}}
            
    {% endif %}
{% endfor %}

这为我带来了我想要的结果,但是我正在努力寻找一种更好的方法来实现这一目标,因为这似乎真的很多余。

我试图找到一个已经解决了这个问题的SO问题,但还没有找到一个问题,因此,如果您能指出我对这个链接的帮助,将会很有帮助。

提前致谢 :)

威廉·范·昂塞姆(Willem Van Onsem)

这是一个二次JOIN,您不应该这样做。您可以Post在视图中简单地用批准的注释数对进行注释:

from django.db.models import Count, Q
from django.views.generic import ListView

class MyListView(ListView):
    model = Post
    queryset = Post.objects.annotate(
        napproved_comments=Count('comment', filter=Q(comment__approved=True))
    )

然后使用以下命令将其呈现在模板中:

{{ post.napproved_comments }}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在vim中注释掉这两个函数的更有效方法

来自分类Dev

django模型:通过OneToOne关系检索对象的更有效方法

来自分类Dev

在Django中更有效的分页方式

来自分类Dev

Django:更有效地从多对多关系中删除项目

来自分类Dev

如何更有效地编写此Django HTML模板?

来自分类Dev

有更有效的方法吗?

来自分类Dev

比函数引用更有效的方法?

来自分类Dev

列出组合的更有效方法

来自分类Dev

选择功能的更有效方法

来自分类Dev

更有效的迭代方法

来自分类Dev

制作JButton的更有效方法

来自分类Dev

创建阵列的更有效方法

来自分类Dev

列出组合的更有效方法

来自分类Dev

复制代码的更有效方法

来自分类Dev

Django ORM中获取相关模型的有效方法

来自分类Dev

什么是在Django中过滤对象的最有效方法

来自分类Dev

创建Django查询集快照的最有效方法?

来自分类Dev

Django CBV调度方法有效语法

来自分类Dev

哪个更有效?

来自分类Dev

使循环更有效

来自分类Dev

更有效的循环

来自分类Dev

使循环更有效

来自分类Dev

比{{}}更有效的在模板中调用Angular方法的方法?

来自分类Dev

Django:基于带有条件的注释进行注释

来自分类Dev

更有效的方法,而不是使用重复的if语句

来自分类Dev

哪种方法查找重复的整数更有效?

来自分类Dev

检查鼠标边界的更有效方法

来自分类Dev

编写jQuery函数的更有效方法

来自分类Dev

距离市中心最近的更有效方法