3

我有这个模型

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 及其主人的姓名。

dogs = Dog.objects.all().prefetch_related('owner_set')

我如何owner.name访问dogs

4

1 回答 1

5

你可以从owner_set

[owner.name for dog in dogs for owner in dog.owner_set.all()]

与 不同select_related()prefetch_related()预缓存来自相关对象的数据,因此每次我们需要每只狗的 owner_set 时,这都不会访问数据库 - 请参阅docs

于 2013-09-14T21:31:27.060 回答