如何在 Django FloatField 中输入无穷大和负无穷大?

发布于 2024-07-27 00:34:39 字数 352 浏览 9 评论 0原文

我试图将无穷大放入 FloatField 中,但这似乎不起作用。 我该如何解决这个问题?

f = DjangoModel(float_value=float('inf')) #ok
f.save() #crashes

结果:

Traceback (most recent call last):
...
ProgrammingError: column "inf" does not exist
LINE 1: ... "float_value") VALUES (inf)

我正在使用 Django 1.0.2 和 PostgreSQL 8.3

I am trying to put infinity in a FloatField, but that doesn't seem to work. How do I solve this?

f = DjangoModel(float_value=float('inf')) #ok
f.save() #crashes

Results in:

Traceback (most recent call last):
...
ProgrammingError: column "inf" does not exist
LINE 1: ... "float_value") VALUES (inf)

I'm using Django 1.0.2 with PostgreSQL 8.3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

网名女生简单气质 2024-08-03 00:34:39

Django 的 ORM 似乎对此没有任何特殊处理。 Python 的值表示是 inf 和 -inf,而 PostgrSQL 需要“Infinity”和“-Infinity”。 显然 Django 的 ORM 不处理这种转换。

所以我猜你需要修复 ORM。 然后考虑以下事实:其他 SQL 数据库很可能需要其他格式,或者根本无法处理无穷大。

It seems like Djangos ORM doesn't have any special handling for this. Pythons representaton of the values are inf and -inf, while PostgrSQL wants 'Infinity' and '-Infinity'. Obviously Djangos ORM doesn't handle that conversion.

So you need to fix the ORM, I guess. And then think about the fact that other SQL databases may very well want other formats, or won't handle infinities at all.

淡墨 2024-08-03 00:34:39

应该是‘无穷大’不是吗? 但是,我不知道是否可以将其存储在浮点字段中。 float('infinity') 返回 inf,这将是一个 char 字段。

编辑:不幸的是,如果不深入挖掘,很难说 Django 使用了什么 C 库。 我会说弄清楚存储在 float 字段中的值实际上是什么,或者至少确定返回的值。 如果它确实是“inf”,那么它就无法正确存储在浮点字段中。

It should be 'infinity' shouldn't it? However, I don't know if that can be stored in a float field. float('infinity') returns inf, and that would be a char field.

Edit: Unfortunately, it is hard to say what C library Django uses without digging deep. I'd say figure out what the value stored in the float field actually is, or at least determine what is being returned. If it is indeed "inf", then that cannot be stored properly in a float field.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文