具有条件

时间:2017-03-23 21:04:28

标签: python django

我正在尝试使用条件获取相关对象的计数:

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

Subitem有一个created_at列,我需要用它来过滤计数(大于日期,小于日期或日期之间)。

如何使用Django ORM执行此操作?

谢谢。

2 个答案:

答案 0 :(得分:0)

你可以这样做

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

答案 1 :(得分:0)

我认为,沿着这些方向的是你正在寻找的东西:

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()
    )
)