如何在 Django 中基于父查询集创建预取查询集
How to create Prefetch queryset based on parent queryset in django
这是场景,一个包含多个投标的项目模型。
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())
)
这里我们只想获取属于过滤项目的出价,而不是所有的出价,如何指定?我期待
queryset=Bid.objects.filter(project=project?)...
谢谢。
Project.objects.filter(whatever condition).prefetch_related(
Prefetch('bids', queryset=Bid.objects.all())
)
这看起来不错。 Django 只会负责为您获取相关的出价。请注意,在这种情况下您不需要 Prefetch
。你可以这样做:
Project.objects.filter(whatever condition).prefetch_related('bids')
如果要过滤查询集,Prefetch
很有用,例如:
Project.objects.filter(whatever condition).prefetch_related(
Prefetch('winning_bids', queryset=Bid.objects.filter(status='WINNING'))
)
这是场景,一个包含多个投标的项目模型。
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())
)
这里我们只想获取属于过滤项目的出价,而不是所有的出价,如何指定?我期待
queryset=Bid.objects.filter(project=project?)...
谢谢。
Project.objects.filter(whatever condition).prefetch_related(
Prefetch('bids', queryset=Bid.objects.all())
)
这看起来不错。 Django 只会负责为您获取相关的出价。请注意,在这种情况下您不需要 Prefetch
。你可以这样做:
Project.objects.filter(whatever condition).prefetch_related('bids')
如果要过滤查询集,Prefetch
很有用,例如:
Project.objects.filter(whatever condition).prefetch_related(
Prefetch('winning_bids', queryset=Bid.objects.filter(status='WINNING'))
)