ValueError:无法序列化:Django中的jdatetime.datetime()

时间:2019-05-31 14:00:01

标签: python django django-models django-2.2

我安装了django-jalali软件包以便能够使用Jalali日历。 该程序包运行良好,我可以运行它,直到我想更改已记录的字段。但是,当我想更改该字段时,出现此错误:

ValueError: Cannot serialize: jdatetime.datetime(1398, 3, 10, 18, 17, 10, 557480)
There are some values Django cannot serialize into migration files.

怎么了?我该如何解决?

2 个答案:

答案 0 :(得分:1)

哦,是的,我遇到了完全一样的错误,并且由于编码不正确和 时区无法读取的django,您不应使用默认值 参数,因为无法序列化迁移文件,因此您必须 使用auto_now_add = True参数。

您必须在设置中设置遵循参数

TIME_ZONE = 'Asia/Tehran'

USE_I18N = True

USE_L10N = True

USE_TZ = True

模型中的示例字段:

date_start = jmodels.jDateTimeField(auto_now_add=True, verbose_name="زمان شروع")

然后再次进行迁移。

祝你好运。

答案 1 :(得分:0)

推荐的解决方案

我确实更改了在datetime项目中使用Django的策略。目前,我在项目中使用UTCAware日期时间。

Django推荐:

Warning

处理有意识的日期时间对象并不总是很直观。对于 实例,标准datetime构造函数的tzinfo参数 在具有DST的时区不能正常工作。通常使用UTC 安全;如果您使用的是其他时区,则应查看pytz 仔细记录文档。