gpt4 book ai didi

Django Infinity 作为日期时间默认值

转载 作者:行者123 更新时间:2023-11-29 12:23:44 25 4
gpt4 key购买 nike

我正在努力了解如何添加具有无限结束日期的日期时间字段。

将默认值设置为 'infinity' 会导致 Django.core 异常

django.core.exceptions.ValidationError: ["'infinity' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]

注意:这与将其定义为 Null (None) 不同。它在 postgres 中特别支持,例如字符串条件检查

SELECT * FROM table WHERE dt = 'infinity'; // or
SELECT * FROM table WHERE NOT isfinite(dt);

Null 不会在此显示,除非您合并它,否则您也不能对 Null 值执行 between 条件,但这将导致顺序扫描。

有什么想法吗?

最佳答案

Django ORM 将 infinity 转换为 datetime.max,因此请考虑改用 datetime.max:

$ psql -d yourdb
yourdb=# UPDATE app_yourmodel SET last_login = 'infinity' WHERE id = 1;

$ python3 manage.py shell
>>> from app.models import YourModel
>>> from datetime import datetime
>>>
>>> YourModel.objects.get(id=1).last_login
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999, tzinfo=<UTC>)
>>>
>>> datetime.max
datetime.datetime(9999, 12, 31, 23, 59, 59, 999999)

关于Django Infinity 作为日期时间默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54564539/

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