gpt4 book ai didi

Django 查询十进制字段

转载 作者:行者123 更新时间:2023-12-03 12:00:15 25 4
gpt4 key购买 nike

我有一个 DecimalField 值为 5.60 的对象。我在做一个查询:

Mdl.objects.get(speed__iexact="5.60")

这将返回正确的结果。但这不会:
Mdl.objects.get(speed__iexact="5.6")

有没有办法自动协调这种不一致?过滤器值是用户提供的,所以我想确保键入 5.6 的用户可以找到该对象。

最佳答案

iexact不区分大小写的相等性检查,通常用于字符串。对于有两位小数的小数,Django 数据库后端可能会将“5.60”存储为 DecimalField 的字符串。 ,所以 iexact-comparison 会起作用,因为字符串是相等的。但是当你想比较数字而不是字符串时,你应该只使用普通的相等运算符。

from decimal import Decimal
Mdl.objects.get(speed=Decimal("5.6"))

不要使用字符串,而是使用 Python 内置的 Decimal类型。使用 Django 检索模型实例时,无论如何您都会获得该类型的实例,因此您还应该分配此类型以保持一致。

关于Django 查询十进制字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4597176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com