Django prefetch_related on a隐式关系

2024-06-17 10:21:11 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我正在制作一个通讯录应用程序。在

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()

这两个对象都有一个email字段。现在我想找到所有的地址簿 用户出现在中。所以我做了一个用户喜欢的方法

^{pr2}$

这很好,但是当我获取几个用户时,我需要为每个用户执行一次DB查询。我想要 喜欢做User.objects.all().prefetch_related('entries'),但这不起作用,因为{}是 方法,而不是外键。在

所以-

  • 有没有一种方法可以告诉django,这里有一种关系,而没有明确的 一个带有through表的多对多字段,这样我就可以使用select\u related?在
  • 或者,当我获取用户时,是否有一种方法可以在对象之间进行连接(这将是一个 我想是交叉连接,但这比我现在拥有的要好。)

Tags: 对象方法用户name应用程序modelmodelsemail
1条回答
网友
1楼 · 发布于 2024-06-17 10:21:11

更“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')

相关问题 更多 >