gpt4 book ai didi

python - Django 和条件聚合

转载 作者:太空狗 更新时间:2023-10-30 02:00:33 25 4
gpt4 key购买 nike

我有两个模型,作者和文章:

class Author(models.Model):
name = models.CharField('name', max_length=100)

class Article(models.Model)
title = models.CharField('title', max_length=100)
pubdate = models.DateTimeField('publication date')
authors = models.ManyToManyField(Author)

现在我想选择所有作者并用他们各自的文章数对其进行注释。这是 Django 的小菜一碟 aggregates .问题是,它应该只计算已经发表的文章。根据ticket 11305在 Django 工单跟踪器中,这还不可能。我尝试使用该票证中提到的 CountIf 注释,但它没有引用日期时间字符串,也没有进行它需要的所有连接。

那么,除了编写自定义 SQL 之外,最好的解决方案是什么?

最佳答案

你可以使用 django-aggregate-if应用程序,灵感来自 ticket 11305 .或者您可以只使用查询集的 extra 方法(假设您的应用程序名为“articles”):

Author.objects.all().extra(
select={'article_count': 'SELECT COUNT(*) FROM "articles_article" '
'INNER JOIN "articles_article_authors" '
'ON "articles_article"."id" = '
' "articles_article_authors"."article_id" '
'WHERE "articles_article_authors"."author_id" = '
' "articles_author"."id" '
'AND "articles_article"."pubdate" IS NOT NULL'})

关于python - Django 和条件聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com