Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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_Mysql_Django - Fatal编程技术网

Python Django查询,大于和小于无效

Python Django查询,大于和小于无效,python,mysql,django,Python,Mysql,Django,我有下表: class OverallAdvise(mixins.OrdMixin, mixins.EqMixin, models.Model): section = models.ForeignKey('quest.Section', on_delete=models.CASCADE, related_name='section_owner') ran

我有下表:

class OverallAdvise(mixins.OrdMixin, mixins.EqMixin, models.Model):
    section = models.ForeignKey('quest.Section',
                                on_delete=models.CASCADE,
                                related_name='section_owner')
    range_start = models.IntegerField(blank=True, null=True)
    range_end = models.IntegerField(blank=True, null=True)
    get_advise = models.CharField(max_length=500)
然后,在serializer中,我尝试根据计算出的分数选择
get\u advice

我的问题是:

get_overall_advise = OverallAdvise.objects.filter(section_id = section_id, range_start__gte = section_overall_score, range_end__lte = section_overall_score).values("get_advise")
但它不起作用


当我在查询中只使用
section\u id
时,它就工作了

给出了
section\u id=6
section\u总体得分=8


在您的
mysql
示例中,我需要类似
range\u start的内容,我看到range\u start永远不会大于range\u end,因此
range\u start\u gte=value
range\u end\u lte=value
不会匹配任何条目,因为值是相同的。除了范围开始==范围结束==值之外


因此,如果在编写ORM查询语句时希望
range\u start,您将看到错误

for row in OverallAdvise.objects.all():
    if row.section_id == section_id:
        if range_start >= section_overall_score:
            if range_end <= section_overall_score:
                return row.get_advice

当我在我的查询中只使用
section\u id
时,它工作了。Ok,我不知道它工作了。请查看我编辑过的答案,然后我想要这样的内容:
range\u start然后它应该是
range\u start\u lte=6,range\u end\u gte=6
对于range\u start小于或等于,range\u end大于或等于,就是这样!非常感谢。将它添加到您的答案中以接受它!你能告诉我这个逻辑是什么吗?您只想根据您的逻辑选择8个部分的总体分数。@NeErAjKuMaR我想要类似于:
range\u start的内容,但您无法根据您的逻辑获得输出。更新代码如下
range\u start\u lte=section\u总体得分,range\u end\u gte=section\u总体得分
@NeErAjKuMaR谢谢!如果
section\u total\u score
0,12
范围内,则该示例有效。如果分数更高,我仍然会出错。即使范围值存储在我的数据库中。这仅适用于
部分\u总体\u分数
=0-12。例如,如果
section\u total\u score
=16,我仍然会得到
htp500
错误。错误是什么。该错误也可能与此无关。如果适用,请将错误添加到原始帖子中。
get_overall_advise = OverallAdvise.objects.filter(section_id = section_id, range_start__lte = section_overall_score, range_end__gte = section_overall_score).values("get_advise")