我正在使用 Python 3.7 和 Postgres 9.5。如果可能,我想编写一个 Django ORM 查询。我有以下型号class PageStat(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE, ) elapsed_time = models.IntegerField(default=0) score = models.IntegerField(default=0)我想做的是编写一个查询,对于给定的文章和经过的时间(以秒为单位的整数),我想编写一个查询,返回具有最大经过时间值的 PageStat 对象,该对象不超过争论。因此,例如,如果我的表有这些值article_id elapsed_time==================1 101 201 302 15我用文章 ID“1”和经过时间“15”进行了搜索,我想找回第一行(其中 article_id = 1 和 elapsed_time = 10),因为“10”是最大值,它仍然更少比 15. 我知道如何写一个查询来查找文章的统计信息,PageStat.objects.filter(article=article)但我不知道如何考虑时间价值。
2 回答
慕少森
TA贡献2019条经验 获得超9个赞
你可以试试:
PageStat.objects.filter(elapsed_time__lte=20)
还有:
lt - less than
gte - greater than equal
gt - greater than
etc
喵喔喔
TA贡献1735条经验 获得超5个赞
您可以对QuerySetby进行排序elapsed_time,然后选择第一个,例如:
slowest_pagestat = PageStat.objects.filter(
article=my_article,
elapsed_time__lte=threshold
).order_by('-elapsed_time').first()
PageState如果PageState存在,这将返回一个对象,None否则将返回。
这将进行如下查询:
SELECT pagestat.*
FROM pagestat
WHERE pagestat.article_id = 1
AND pagestat.elapsed_time <= 15
ORDER BY pagestat.elapsed_time DESC
LIMIT 1
用1的主键my_article,和15所述threshold。
添加回答
举报
0/150
提交
取消