具有条件的相关对象的Django计数

2024-09-28 22:07:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试获取具有以下条件的相关对象的计数:

Item.objects.annotate(count_subitems=Count('subitems'))

子项有一个created_at列,我需要使用它来筛选计数(大于日期、小于日期或介于日期之间)。在

我怎么能用Django ORM做到这一点?在

谢谢。在


Tags: 对象djangoobjectscountormitem条件at
2条回答

我想,你要找的是:

from django.db.models import Count, Sum, Case, When, IntegerField

Item.objects.annotate(
    count_subitems=Sum(
        Case(When(subitems__created_at__lte=datetime.now(), then=1)),
        output_field=IntegerField()
    )
)

你可以这样做

Item.objects.filter(subitems__created_at__lte=datetime.now()).annotate(count_subitems=Count('subitems'))

相关问题 更多 >