2014-03-28 70 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

相關問題