Django,从视图创建一个新的模型实例抛出ValidationError

时间:2014-03-28 08:37:32

标签: python django django-models django-views

我有以下模型

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."]

同时,如果直接在DB中运行,以下行可以正常工作:

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

我不明白为什么django要我输入 datetime-elements ,即使我已经指定null也没关系。

2 个答案:

答案 0 :(得分:2)

删除日期时间字段的default=""

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

即使您已指定blank=Truenull=True,django也会尝试在未指定任何内容时设置默认值。但由于默认格式不是预期格式,因此会导致问题。

答案 1 :(得分:1)

您应该从日期时间字段中删除 default = ""。 如果你想在db中创建条目时将当前时间填入日期时间,你可以使用

auto_now_add=True

有关详情,请访问django doc