【问题标题】:How to provide current time to DateTimeFields in Django fixtures?如何为 Django 装置中的 DateTime 字段提供当前时间?
【发布时间】:2017-02-21 03:29:57
【问题描述】:

我正在尝试为我的一个 Django 模型创建一个 JSON 固定装置。

模型很简单:

class Tag(models.Model):
    tag = models.CharField(max_length=50, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)

我的夹具也很简单:

[
  {
    "model": "myapp.tag",
    "pk": 1,
    "fields": {
      "tag": "Test 1"
    }
  },
{
    "model": "myapp.tag",
    "pk": 2,
    "fields": {
      "tag": "Test 2"
    }
  }
]

不幸的是,我在尝试运行夹具时收到以下错误:

IntegrityError: NOT NULL constraint failed: myapp_tag.created_at

所以看起来auto_now_add=True 在运行夹具时没有被调用。我不想硬编码一些日期,因为这看起来很奇怪。 (我也认为硬编码 PK 很奇怪。)

有没有办法让 created_at 日期自动使用今天?

另外,PK可以自动递增吗?

感谢您的帮助。

【问题讨论】:

  • 您是否尝试使用 django orm 插入?
  • 感谢您的回复。我正在通过python3 manage.py loaddata tags.json 进行输入

标签: django django-fixtures


【解决方案1】:

auto_now_add=True 仅在您 django 将记录插入 DB 时才有效,否则它将不起作用。

为了让它工作,编写一个简单的python脚本并使用当前日期时间更新json文件,然后尝试这个命令将数据加载到数据库。

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 2021-10-25
    • 2010-11-11
    • 1970-01-01
    • 2010-12-24
    • 2014-07-02
    相关资源
    最近更新 更多