【问题标题】:Django - in the model, created_at is a UNIX timestampDjango - 在模型中,created_at 是一个 UNIX 时间戳
【发布时间】:2017-01-06 22:29:38
【问题描述】:

我是 Django 新手。我会在 Rails 中更好地掌握这一点,但对 Python / Django 中的所有库和转换不够熟悉。

我有一个模型:

class Status(models.Model):
  created = models.DatetimeField(auto_now_add=True)

这导致格式:

"created": "2017-01-06T22:21:51.531723Z"

我希望在保存到它作为 UNIX 值存储的数据库之前看看是否?

这看起来很有希望https://stackoverflow.com/a/34843855/3007294,但无法让它发挥作用。每次我尝试创建一个状态对象时,我都会收到此错误:

Datetime has wrong format. Use one of these formats instead: YYYY-MM-DDThh:mm[:ss[.uuuuuu]][+HH:MM|-HH:MM|Z].

我的意图是不必在每次创建 Status 对象时都输入它。

谢谢 -

【问题讨论】:

  • 不清楚你在问什么。该字段将保存为数据库的日期时间格式。你根本不需要做任何事情。
  • @DanielRoseman 我希望将该字段保存为 UNIX 时间戳(从日期时间格式转换而来)。

标签: python django unix


【解决方案1】:

我的意图是不必在每次创建 Status 对象时都输入它。

auto_now_add=True option 已经解决了这个问题。当您创建 Status 对象时,created 字段将填充当前日期时间。

我希望在保存到它作为 UNIX 值存储的数据库之前看看是否?

您可以随时将 datetime 值从 Status.created 转换为 Unix 时间戳。将其存储为默认数据库日期时间格式(DatetimeField 所做的)通常比将其存储为时间戳(它只是一个整数)更可取。

但是,您提供的示例中使用的库 django-unixdatetimefield 声明“UnixDateTimeField 基于标准 Django DateTimeField 的实现,使其 100% 兼容它支持的所有功能和选项。”因此,您应该能够为该字段提供auto_now_add=True 选项。

【讨论】:

  • 感谢@Rushy 澄清!我对文档的审查不够好,你是对的。欣赏!
猜你喜欢
  • 1970-01-01
  • 2014-12-23
  • 1970-01-01
  • 1970-01-01
  • 2011-12-22
  • 2020-10-03
  • 2015-11-17
  • 1970-01-01
  • 2021-10-18
相关资源
最近更新 更多