這是一個重複的問題,但我找不到任何其他人。我正在嘗試獲取有投訴的照片列表。我不能簡單地接受投訴並處理相關照片 - 我需要一組照片。過濾Django對象存在相關對象
這應該工作,但看起來不正確:
Photo.objects.filter(complaint__id__gte=0)
這似乎不是最有效的方法:
Photo.objects.annotate(Count('complaint')).exclude(complaint__count=0)
有沒有更好的辦法?
這是一個重複的問題,但我找不到任何其他人。我正在嘗試獲取有投訴的照片列表。我不能簡單地接受投訴並處理相關照片 - 我需要一組照片。過濾Django對象存在相關對象
這應該工作,但看起來不正確:
Photo.objects.filter(complaint__id__gte=0)
這似乎不是最有效的方法:
Photo.objects.annotate(Count('complaint')).exclude(complaint__count=0)
有沒有更好的辦法?
怎麼樣......
Photo.objects.filter(complaint__isnull=False)
我不知道什麼是最好的,但工作也是如此。
Photo.objects.exclude(complaint=None)
生成的SQL查詢在這裏是不一樣的情況下,與.filter(complaint__isnull=False)
,但意義是相同的。
這比接受的答案要好,因爲它不需要'.distinct()'調用來處理多值關係。 – Dan
局長,謝謝! – Jake
最後,您可能還需要一個.distinct()才能像註釋一樣複製相同內容。至少我做到了。 – Christoffer
@Christoffer你救了我的命,謝謝。這是一個致命的問題,所以我想寫評論並改進重點。 –