Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django限制子查询_Python_Django - Fatal编程技术网

Python Django限制子查询

Python Django限制子查询,python,django,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) away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date') tips

我编写了以下代码:

away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')[:3]
tips = tips.filter(prediction__fixture__in=away_fixtures)
away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')
tips = tips.filter(prediction__fixture__in=away_fixtures)
执行时发生以下错误(我使用MariaDB 10.4,它不支持子查询中的限制):

执行以下代码时:

away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')[:3]
tips = tips.filter(prediction__fixture__in=away_fixtures)
away_fixtures = Fixture.objects.filter(Q(away=home) | Q(home=away)).order_by('-date')
tips = tips.filter(prediction__fixture__in=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\u fixtures
,因此我试图强制计算第一个查询以获得ID,然后通过对这些ID进行筛选来获得第二个查询。

这将限制为三个提示,而不是三个fixtures您是对的。。因此,我认为您需要强制执行两个查询:一个用于检索最后三个装置的ID,然后根据这些装置提供提示。我将编辑我的答案。