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")