django - 使datetimefield接受unix时间戳

时间:2015-08-24 09:20:49

标签: python django datetime unix-timestamp

我想让模型的DateTimefield接受unix时间戳(以秒为单位)的值。

我发现了这个,但是这个解决方案并不起作用? unixtimestamp input in DataTimeField

即。我不知道如何添加'%s'因为输入格式会起作用,特别是当标准日期时间字段的to_python()代码不包含处理unix时间戳的任何逻辑时。

如果有一个设置可以让我这么做。
否则,我想我想要的是继承DateTimeField,并在设置值时以某种方式自动将int转换为datetime对象。我希望在保存之前执行此操作而不是覆盖save(),因为我在检索此字段的值时需要一致性。即,当我取出价值时,我不想担心我是否有一个日期时间对象或一个int,无论实例是否已被保存。

我查看了django.db.models.fields的来源,这对我来说并不明显。

1 个答案:

答案 0 :(得分:5)

pip包django-unixdatetimefield提供了一个UnixDateTimeField字段,您可以将其用于开箱即用(https://pypi.python.org/pypi/django-unixdatetimefield/)。

示例模型:

from django_unixdatetimefield import UnixDateTimeField

class MyModel(models.Model):
    created_at = UnixDateTimeField()

Python ORM查询:

>>> m = MyModel()
>>> m.created_at = datetime.datetime(2015, 2, 21, 19, 38, 32, 209148)
>>> m.save()

数据库:

sqlite> select created_at from mymodel;
1426967129

以下是感兴趣的源代码 - https://github.com/Niklas9/django-unixdatetimefield

免责声明:我是此pip包的作者。