我有这个模特
class Animal(models.model):
name = models.CharField()
class Dog(Animal):
field = models.IntegerField()
class Owner(models.model):
animal = models.ForeignKey(Animal)
name = models.CharField()
现在假设我想要所有狗及其主人的名字。
dogs = Dog.objects.all().prefetch_related('owner_set')
如何从owner.name
访问dogs
?
答案 0 :(得分:5)
您可以从owner_set
[owner.name for dog in dogs for owner in dog.owner_set.all()]
与select_related()
不同,prefetch_related()
会阻止来自相关对象的数据,因此每次我们需要每只狗拥有一个owner_set时,这不会打到数据库 - 请参阅docs。