如何基于django中的父查询集创建预取查询集

By simon at 2018-02-28 • 0人收藏 • 81人看过

这是场景,一个包含多个出价的项目模型。

Class Project(models.Model):
    user = models.ForeignKey()

Class Bid(models.Model):
    project = models.ForeignKey(Project, related_name='bids')
当我们在查询项目时,我们想要预先填写对项目进行投标。
Project.objects.filter(whatever condition).prefetch_related(
     Prefetch('bids', queryset=Bid.objects.all())
)
这里我们只想获取属于过滤项目的出价,但是 不是所有的bids,我们如何指定?我期待着类似的东西
queryset=Bid.objects.filter(project=project?)... 
谢谢。

1 个回复 | 最后更新于 2018-02-28
2018-02-28   #1

Project.objects.filter(whatever condition).prefetch_related(
     Prefetch('bids', queryset=Bid.objects.all())
)
这看起来不错。 Django将只处理相关的出价 您。请注意,你不需要Prefetch在这种情况下。你可以这样做:
Project.objects.filter(whatever condition).prefetch('bids')
如果要过滤查询集,则Prefetch很有用,例如:
Project.objects.filter(whatever condition).prefetch_related(
     Prefetch('winning_bids', queryset=Bid.objects.filter(status='WINNING'))
)

登录后方可回帖

Loading...