如果我必须首先导入旧数据,如何对 Django 时间戳建模?

Posted

技术标签:

【中文标题】如果我必须首先导入旧数据,如何对 Django 时间戳建模?【英文标题】:How do I model Django timestamps if I must import old data initially? 【发布时间】:2020-01-19 18:26:55 【问题描述】:

我有一些基本的时间戳字段应该以 auto_now_add 结尾:

class Example(models.Model):
    created = models.DateTimeField(auto_now_add=True)

但是,我需要从已经为现有数据填充这些创建时间戳的外部数据库中播种初始 Django 项目数据库。

我想我可能需要做以下事情:

    created = models.DateTimeField(default=timezone.now)

    导入旧数据库数据

    迁移到 created = models.DateTimeField(auto_now_add=True)

这是保留旧时间戳的必要条件,还是我可以从所需的auto_now_add 开始并以某种方式导入而忽略这一点?

【问题讨论】:

您打算如何导入数据? @grrrrrrr 不知道如何回答。会有一个 FilemakerPro 数据库的转储,然后我想我需要编写一个 Python 脚本来将该数据库的字段映射到新的 Django 项目。 This thread 可能有用。 【参考方案1】:

基于 auto_now_add 的 Django docs,使用该标志将导致该字段不可编辑:

按照目前的实施,将 auto_now 或 auto_now_add 设置为 True 将导致该字段设置为 editable=False 和 blank=True。

考虑到这一点,您可以按照您的建议使用default=timezone.now,并在文档中提及。

【讨论】:

以上是关于如果我必须首先导入旧数据,如何对 Django 时间戳建模?的主要内容,如果未能解决你的问题,请参考以下文章

如何避免 Django 中的导入时数据库访问?

如何从Access中提取序列化数据

django模板添加旧表单数据

安卓如何将旧手机所有资料导入新手机

将旧 (Django 0.97) 模型数据导入/迁移到 Django 1.8 或更高版本

Django如何把SQLite存储的数据迁移至Mysql数据库中