我有word
模型和phrase
模型
class Word(models.Model):
checked = models.BooleanField(default=False)
class Phrase(models.Model):
words = models.ManyToManyField(Word, null=True,related_name = "phrases")
Word
模型具有属性checked
,并且与phrase
的多对多连接
我有一个查询,像这样:
Phrase.objects.exclude(words__checked=True).filter(words__group__pk__in = groups_ids)
但是它在大型数据集上的运行速度确实非常慢,而且问题出在排除部分,原因是没有它-运行足够快 所以我发现我应该在这里使用原始sql的建议, Performance issue with django exclude
那么,如何用原始sql重写这句话?
(由于需要,我需要此查询同时运行postgres和mysql,或者如果一个查询不能达到此要求,则我将需要两个查询,postgres查询具有更高的优先级)
到目前为止,我已经尝试使用.extra语法,但是它没有用,所以在这里询问。