Django 中的 UnixDateTimeField
项目描述
# django-unixdatetimefield
[](https://travis-ci.org/Niklas9/django-unixdatetimefield ) [ ]( https://pypi.python.org/pypi/django-unixdatetimefield/ ) []( https://pepy.tech/project/django-unixdatetimefield )
为您的 Django 模型提供 UnixDateTimeField。现在也支持 Django 3。
我发现这在将 Django 集成到遗留数据库时特别有用,其中典型的 DateTime 列类型被存储为 Unix 时间戳(http://en.wikipedia.org/wiki/Unix_time)。
UnixDateTimeField 基于标准 Django DateTimeField 的实现,使其 100% 兼容它支持的所有功能和选项。
## 用法
首先,您需要将 UnixDateTimeField 附加到您的模型。这相当于数据库级别的 Django PositiveIntegerField,但在 ORM 抽象层提供了 Django DateTimeField。
示例模型:
从 django_unixdatetimefield 导入 UnixDateTimeField
- 类 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> 从 mymodel 中选择 created_at;1426967129
享受!
## 安装
使用 pip 安装:
pip install django-unixdatetimefield
## 兼容性当前支持矩阵(针对每个版本进行例行测试,有关更多详细信息,请参阅.travis.yml):
Django 1.11.x 与 Python 2.7、3.4、3.5
Django 2.0.x 和 Python 3.4
Django 2.xy 与 Python 3.5
Django 2-3.x 与 Python 3.6、3.7、3.8
由于这个库的主要用例是与遗留数据库集成——我热衷于保持对旧版本的 Python 和 Django 的支持。如果您正在使用不受支持的组合,请告诉我,我很乐意尝试看看我们是否可以支持它。
我承认并尊重那些喜欢在他们的数据库中使用 unix 时间戳的人,但根据我的经验,这些开发人员越来越少:)
## Contributing 该项目通过 GitHub 拉取请求接受贡献。
遵循谷歌的 Python 风格指南 https://google.github.io/styleguide/pyguide.html
提交逻辑单元,消息应包括更改的内容和原因,并以过去时态书写
### 测试我发现测试 Python 和 Django 版本的不同组合的最简单方法是使用 Docker,使用简单的标志启动,例如 Python 2.7 或 3.8,例如 Django 1.11.x 或 Django 3。 X。对于任何想要测试或贡献的人,我相信这是最快的方式。有一个名为build_n_run.sh的帮助文件,它将构建 docker 映像并自动启动一个容器。
### 上传到 pypi 总的来说,我认为本指南非常有用 – https://www.digitalocean.com/community/tutorials/how-to-package-and-distribute-python-applications。由于该项目中已经设置了所有设置,因此应该只是
$ python3 setup.py sdist
$ python3 setup.py sdist 上传
记得事先更新setup.py和django_unixdatetimefield/__init__.py中的版本号。
## 许可 BSD,就像主要的 Django 项目一样。请参阅此 repo 根目录中的LICENSE文件。