为了账号安全,请及时绑定邮箱和手机立即绑定

Django 限制子查询

Django 限制子查询

Qyouu 2023-07-11 14:12:09
我写了以下代码: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 个固定装置)。如何在不切换数据库引擎的情况下实现这一目标?
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

我没有测试过,所以我不确定:

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 来强制评估第二个查询。


查看完整回答
反对 回复 2023-07-11
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信