让我们说我正在制作地址簿应用。
class AddressBookEntry(models.Model):
address_book = models.ForeignKey(AddressBook)
name = models.CharField()
email = models.EmailField()
class User(models.Model):
name = models.CharField()
email = models.EmailField()
这两个对象都有一个电子邮件字段。现在我想找到给定的所有通讯录 用户出现在。所以我在用户上创建一个方法
def entries(self):
return AddressBookEntry.objects.filter(email=self.email)
工作正常,但是当我提取一些用户时,我需要为每个用户执行一次数据库查询。我' d
喜欢User.objects.all().prefetch_related('entries')
,但这不起作用entries
是一个
方法,而不是ForeignKey。
所以 -
答案 0 :(得分:0)
更多'Django'的方法是拥有一个明确的关系字段:
class AddressBookEntry(models.Model):
address_book = models.ForeignKey(AddressBook)
name = models.CharField()
user = models.ForeignKey("User", related_name="entries")
class User(models.Model):
name = models.CharField()
email = models.EmailField()
User.objects.all().select_related('entries')