我有word
模型和phrase
模型
class Word(models.Model):
....
class Phrase(models.Model):
words = models.ManyToManyField(Word, null=True,related_name = "phrases")
我需要执行一个复杂的查询:
Word
是unique
,如果它仅属于一个 Phrase
。Phrase
具有至少 2个唯一词=>我们说它是special
到目前为止,我正在通过使用for..in循环进行迭代,但这似乎并不有效。 我该怎么做呢? (短语将始终至少包含一个单词,而单词将始终包含至少一个短语。
答案 0 :(得分:0)
如果我理解正确,那可能会起作用:)
from django.db.models import Count
special_phrases = Phrase.objects.annotate(
count=Count('words')).filter(
count__gte=2).values_list('id', flat=True)
result = Word.objects.filter(phrases__id__in=special_phrases)