Django,视图中创建新模型实例时引发ValidationError

0 投票
2 回答
2193 浏览
提问于 2025-04-18 00:17

我有一个这样的模型

class Machine(models.Model):
    name = models.CharField(max_length=255, primary_key=True)
    user = models.CharField(max_length=255)
    mail = models.CharField(max_length=255)
    datetime = models.DateTimeField(blank=True, null=True, default="")
    licenses = models.CharField(max_length=10000, blank=True, null=True, default="")

正如你看到的,我想让datetimelicenses可以为空。

我想在我的视图中用以下代码创建这个模型的新实例:

Machine.objects.create(name=machine_name, user=user_name, mail=user_mail)

但是我遇到了这个问题:

ValidationError at /update
[u"'' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."]

同时,如果直接在数据库中运行以下代码,它是可以正常工作的:

INSERT INTO `xxx`.`xxx` (`name`, `user`, `mail`) VALUES ('a', 'b', 'c');

我不明白为什么Django还要求我输入datetime元素,即使我已经说明可以为空。

2 个回答

1

你应该把 default = "" 从你的日期时间字段中去掉。如果你想在创建数据库记录时自动填入当前时间,可以使用

auto_now_add=True

想了解更多信息,可以去看看 Django 文档

2

去掉 default="" 这个设置,适用于日期时间字段。

datetime = models.DateTimeField(blank=True, null=True,)

即使你已经设置了 blank=Truenull=True,Django 还是会尝试在没有指定值的情况下给这个字段设置一个默认值。但是因为这个默认值的格式不对,所以就会出现问题。

撰写回答