2014-03-28 38 views
0

我有以下模式Django的,从视图中创建一个新的模型实例抛出ValidationError

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

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

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

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

+1

谢谢!我真的错过了这一点。 – theAlse

1

您应该从datetime字段中删除default = ""。 如果你想填补现在时刻的日期时间,同时使创建数据库录入提交,您可以使用

auto_now_add=True

更多信息,你可以去django doc

相关问题