Django models 如何在Django子查询中使用范围筛选?

Django models 如何在Django子查询中使用范围筛选?,django-models,Django Models,我正在尝试运行(简化): 。。。我得到: ValueError: This queryset contains a reference to an outer query and may only be used in a subquery. 我还有其他适用于OuterRef的筛选条件-为了比较,下面是完整的子查询: reverses = Location.objects.annotate(mod_reversed=F('reversed') % 2).filter(mod_reversed=

我正在尝试运行(简化):

。。。我得到:

ValueError: This queryset contains a reference to an outer query and may only be used in a subquery.
我还有其他适用于OuterRef的筛选条件-为了比较,下面是完整的子查询:

reverses = Location.objects.annotate(mod_reversed=F('reversed') % 2).filter(mod_reversed=1)\
            .filter(device=OuterRef('device'), person=OuterRef('mungee'), collect_time__range=(OuterRef('start_time'), OuterRef('stop_time')))

仅删除范围筛选器可以使此操作无误运行,但需要该筛选器。如何运行此功能?

看起来它在没有_范围的情况下也能工作,因此,与其:

collect_time__range=(OuterRef('start_time'), OuterRef('stop_time'))
你可以做:

collect_time__gte=OuterRef('start_time'), collect_time__lte=OuterRef('stop_time')
。。。Django的臭虫?我在2.2.6上

我还解决了计算子查询的另一个问题;我添加了以下步骤:

count_reverses = reverses.annotate(c=Count('*')).values('c')
。。。我要说明的是:

reverse_count=Subquery(count_reverses, output_field=IntegerField())

您能否分享相关的型号(可能是
位置
行程
)?
reverse_count=Subquery(count_reverses, output_field=IntegerField())