我想让模型的DateTimefield接受unix时间戳(以秒为单位)的值。
我发现了这个,但是这个解决方案并不起作用? unixtimestamp input in DataTimeField
即。我不知道如何添加'%s'因为输入格式会起作用,特别是当标准日期时间字段的to_python()代码不包含处理unix时间戳的任何逻辑时。
如果有一个设置可以让我这么做。
否则,我想我想要的是继承DateTimeField,并在设置值时以某种方式自动将int转换为datetime对象。我希望在保存之前执行此操作而不是覆盖save(),因为我在检索此字段的值时需要一致性。即,当我取出价值时,我不想担心我是否有一个日期时间对象或一个int,无论实例是否已被保存。
我查看了django.db.models.fields的来源,这对我来说并不明显。
答案 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包的作者。