获取不同的 django sqlite3 的数量

get count of distinct django sqlite3

我想在选择另一个字段的不同字段后获取查询集的计数。

我的代码:

module_attempts_count = Subquery(ModuleProgressAttempt.objects.filter(
    module_progress__module__id=OuterRef('id')).values('module_progress__user').distinct().values(
    'module_progress__module__id').annotate(count=Count('id')).values('count'))
real_instances = VirtualClassRoomModule.objects.filter(
    id__in=[vc.id for vc in vc_classrooms]).annotate(attendees_count=module_attempts_count,)

我正在将计数字段注释到查询集中。为了评估计数,我希望当前项目的 ModuleProgressAttempt 明显具有 module_progress__user。一个用户应该只被计算一次。 Postgres 支持不同的('module_progress__user')。我希望它适用于所有数据库。当前解决方案在不考虑不同用户的情况下采用总计数。

这有效。

Subquery(ModuleProgressAttempt.objects.filter(
            module_progress__module__id=OuterRef('id')).values('module_progress__module__id')
            .annotate(count=Count('module_progress__user__id', distinct=True)).values('count'))