Ush*_*her 6 django prefetch django-queryset
这是一个场景,一个包含多个投标的项目模型。
Class Project(models.Model):
user = models.ForeignKey()
Class Bid(models.Model):
project = models.ForeignKey(Project, related_name='bids')
Run Code Online (Sandbox Code Playgroud)
当我们查询项目时,我们想要预取项目的投标。
Project.objects.filter(whatever condition).prefetch_related(
Prefetch('bids', queryset=Bid.objects.all())
)
Run Code Online (Sandbox Code Playgroud)
这里我们只想获取属于过滤项目的投标,而不是所有投标,我们如何指定呢?我期待类似的事情
queryset=Bid.objects.filter(project=project?)...
Run Code Online (Sandbox Code Playgroud)
谢谢。
Project.objects.filter(whatever condition).prefetch_related(\n Prefetch('bids', queryset=Bid.objects.all())\n)\nRun Code Online (Sandbox Code Playgroud)\n\n这看起来不错。Django 将只为您获取相关出价。请注意,在这种情况下您不需要\xe2\x80\x99 Prefetch。你可以这样做:
Project.objects.filter(whatever condition).prefetch_related('bids')\nRun Code Online (Sandbox Code Playgroud)\n\n如果您想过滤查询集,这Prefetch很有用,例如:
Project.objects.filter(whatever condition).prefetch_related(\n Prefetch('winning_bids', queryset=Bid.objects.filter(status='WINNING'))\n)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
3889 次 |
| 最近记录: |