2017-10-06 26 views
1

我有以下型號:拯救一個空場時提出也不例外空=假 - Django的

class User(models.Model): 
    email = models.EmailField(max_length=254, null=False, unique=True) 
    referral_code = models.CharField(max_length=10, null=False, unique=True) 

和所使用的Django的殼保存referral_code用戶實例未定義:

u = User(email="[email protected]") 
u.save() 

這沒有引發異常。我的理解是null = False需要設置referral_code - 這是不是這種情況?我將如何實現這一行爲?

更新

我注意到字段設置爲u.referral_code='',所以給出的唯一性約束,這已引發異常,當我試圖重複此過程,一個新的實例。我寧願拋出異常,因爲我沒有設置字段...

回答

2

您的referral_code的值不是null,它是''(空白字符串)。這是CharField的默認值。

有問題一起更新時間:

數據是通過對模型覆蓋save存儲在數據庫中,才能產生錯誤

class User(models.Model): 
    email = models.EmailField(max_length=254, null=False, unique=True) 
    referral_code = models.CharField(max_length=10, null=False, unique=True) 

    def save(self, *args, **kwargs): 
     assert self.email, "The 'email' field must be populated." 
     super().save(*args, **kwargs) 

應當指出的是,這並不是儘可能優先於表單驗證。