我正在尝试使用条件获取相关对象的计数:
Item.objects.annotate(count_subitems=Count('subitems'))
Subitem有一个created_at列,我需要用它来过滤计数(大于日期,小于日期或日期之间)。
如何使用Django ORM执行此操作?
谢谢。
答案 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()
)
)