python - Django 限制子查询
问题描述
我写了以下代码:
away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')[:3]
tips = tips.filter(prediction__fixture__in=away_fixtures)
执行时出现以下错误(我使用的是 MariaDB 10.4,它不支持子查询中的 LIMIT):
django.db.utils.NotSupportedError: (1235, "This version of MariaDB doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'")
执行以下代码时:
away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')
tips = tips.filter(prediction__fixture__in=away_fixtures)
但这会返回所有“away_fixtures”的“提示”,我只想要最后 3 个夹具的提示(因此将其限制为 3 个夹具)。如何在不切换数据库引擎的情况下实现这一目标?
解决方案
我没有测试它,所以我不确定:
away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')[:3]
tips = tips.filter(prediction__fixture__id__in=[fixture.id for fixture in away_fixtures])
我认为问题出在限制为三个子查询away_fixtures
,所以我试图强制评估第一个查询以获取 id,然后通过过滤这些 id 来获取第二个查询。
推荐阅读
- javascript - 你能帮忙看看控制台日志吗?
- javascript - 无法在我的颤动网络中删除放大和缩小
- java - Intellij:maven clean verify:无法执行目标org.jasig.mojo.jspc:jspc-maven-plugin:2.0.2:compile:无法编译JSPS
- git - 致命:无法访问“https://git-codecommit.eu-west-1.amazonaws.com/v1/repos/myrepo/”:请求的 URL 返回错误:403
- html - 闪亮应用程序的框架名称是什么,如何更改?
- mysql - MySQL:在 GROUP BY 查询中获取非分组列的最后一个值
- php - 使用 PDO Sqlserver 删除
- python - Python 版本号与 != 比较(不等于)
- javascript - Jquery 菜单按钮设置 1 个默认活动颜色
- google-apps-script - 谷歌表格:如何内爆由查询产生的范围