比方說,我有一個電影,書籍和軟件的數據庫,他們都繼承了一個單一的項目模型。如何在一對一關係可能不同的反向一對一關係中預取相關?
class Item(models.Model):
...
class Movie(models.Model):
item = models.OneToOneField(Item)
...
class Book(models.Model):
item = models.OneToOneField(Item)
...
class Software(models.Model):
item = models.OneToOneField(Item)
...
現在我想就項目數據庫查詢,但我想對相關對象拿起這個項目,無論是電影,書籍或軟件。如果所有的項目都是一個類型,比如說電影,然後我可以做到以下幾點:
Item.objects.prefetch_related('movie')
不過,我需要能夠不管它是什麼類型獲取相關對象。我可以運行:
Item.objects.prefetch_related('movie', 'book', 'software')
這會找到相關的對象,無論它是什麼類型,這將是有效的嗎?有沒有更好的方法來做到這一點?