我正在努力查看如何添加具有无限结束日期的datetime字段。
将默认值设置为'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."]
NB:这与将其定义为Null(无)不同。在postgres中特别支持它,例如仅作为字符串条件检查
SELECT * FROM table WHERE dt = 'infinity'; // or
SELECT * FROM table WHERE NOT isfinite(dt);
在此不会显示空值,也不能对Null值执行两次之间的条件,除非您将其封闭,但这会导致顺序扫描。
有什么想法吗?
答案 0 :(得分:0)
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)