【发布时间】:2021-04-12 11:14:05
【问题描述】:
我需要计算子查询中的行数,这是我的 sqlite 解决方案。
class SQCount(Subquery):
"""Count lines in subquery"""
template = "(SELECT count(*) FROM (%(subquery)s) _count)"
output_field = models.IntegerField()
sub = MyModel.objects.filter(user=OuterRef(OuterRef('id'))).values('id')
qs = qs.annotate(count_total=SQCount(sub))
它适用于 sqlite,但不适用于 MySQL(抱怨 'where' 子句中的未知列)。任何帮助表示赞赏。
【问题讨论】:
-
为什么
user不是ForeignKey到MyModel?这将使它在 Django 中更优雅,并且(可能)在数据库端更高效。 -
user是MyModel的外键。但我想在这里使用子查询,因为实际上我的请求必须使用子查询(有问题你可以看到简化代码)
标签: mysql django django-orm