Django原始sql查询

时间:2012-02-26 15:05:14

标签: mysql django django-models django-queryset

我有一个这个模型:

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 ...')

2 个答案:

答案 0 :(得分:2)

将Django查询转换为SQL的最简单方法是简单地查看Django生成的SQL:How can I see the raw SQL queries Django is running?

答案 1 :(得分:0)

您可以通过以下方式获得相应的查询:

queryset = Document.objects.annotate(num_users=Count(users))  
sql_query = queryset.query
print(sql_query)