假设我有一个包含电影、书籍和软件的数据库,它们都继承了一个 Item 模型。
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')
无论它是什么类型,这都会找到相关的对象,这是否有效?有没有更好的方法来做到这一点?