我有一個模型(或實際上2款,但對方是不是相關的)如何獲得一個Django的QuerySet所有對象的所有ForeignKeys在一個QuerySet
class Foo(models.Model):
...
bar = models.ForeignKey(Bar,
...
)
當我有Foo
一個QuerySet :s,我如何獲得該QuerySet引用的所有Bar
實例?
由於我使用的是MySQL,我不能做.distinct(['bar'])
這裏到['in']鏈接(https://docs.djangoproject.com/en/dev/ref/models/querysets /#in)在文檔中查找字段。 –
我很好奇,這是多高效,有沒有辦法更有效地做到這一點? – Algorithmatic
@Algorithmatic - 這是一個非常廣泛的問題,它取決於您使用的數據庫,數據和索引。在MySQL上運行它可能會非常慢,因爲MySQL在處理Django生成的子查詢時非常糟糕。爲了解決這個問題,你可以執行1個查詢來獲得'bar_ids',然後將它傳遞給'__in'子句'Bar.objects.filter(id__in = set(foo_queryset.values('bar_id')))'顯然if你有很多'Foo'對象,這也可能很慢 –