2012-03-21 70 views
8

真我有這樣的模式:Django的獨特=除空白值

class Part(models.Model): 
    serial_number = models.CharField(max_length=15, null=True, blank=True, validators=[validate_serial], unique=True) 
    .... 

SERIAL_NUMBER可以爲空和空,因爲所有的部件不一定有序號。然而,存儲一個部分沒有序列號後,空白不再是獨一無二的,我得到這個錯誤:

部分與此序列號已經存在。

對此有一個解決方法嗎?我已經看過this question,但我沒有模型。我要麼使用管理員,要麼直接在代碼中執行。

+5

如果您使用admin,那麼你可以自定義一個標準格式。我展示了你如何鏈接到答案。如果你在代碼中完成它,只需設置'part.serial_number = None'而不是使用空白值。 – Alasdair 2012-03-21 15:58:15

回答

-1

我敢肯定,有空值,所以在唯一性約束考慮在內。解決這個問題的方法是不使用null,而是使用空字符串。所以,刪除null=True

+0

是的,你可以在一個獨特的列中有更多的空值。但是,OP想要允許多個空值。因此它們必須允許null,因爲唯一性檢查只允許一個空字符串。 – Alasdair 2012-03-21 20:49:35

4

我遇到了同樣的問題,通過保存在該字段中指定None固定它。

指定default=None可能有幫助。