我有这个模特:
class Document(models.Model):
data = models.TextField()
users = models.ManyToManyField(User)
您如何将上述模型的以下查询转换为原始sql?
Document.objects.annotate(num_users=Count(users))
我需要将其切换到原始sql,因为在使用MySql时django中存在一个错误,这会使注释非常慢。
但是我不确定如何处理原始sql中的多对多字段。
Document.objects.raw('SELECT ...')
将Django查询转换为SQL的最简单方法是简单地查看Django生成的SQL:How can I see the raw SQL queries Django is running?
您可以通过以下方式获得相应的查询:
queryset = Document.objects.annotate(num_users=Count(users))
sql_query = queryset.query
print(sql_query)