1. 程式人生 > >django資料庫模型明明設定了default值,資料庫卻不能體現,為何?

django資料庫模型明明設定了default值,資料庫卻不能體現,為何?

class Book(models.Model):
    """圖書"""
    name = models.CharField(max_length=30, verbose_name='書名')
    pub_date = models.DateField(verbose_name='釋出日期')
    read = models.IntegerField(default=0, verbose_name='閱讀量')
    comment = models.IntegerField(default=0, verbose_name='評論量')
    is_delete = models.BooleanField(default=False, verbose_name='邏輯刪除')

    class Meta:
        db_table = 'tb_book'
        verbose_name = '圖書'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

如上所示,模型類中明明對read,comment欄位預設值進行了設定,default=0,但遷移資料庫生成表後,檢視資料庫,竟然發現沒有預設值.

實際是這樣的,雖然資料庫沒有增加預設值,操作orm時,這兩個欄位可以不用設定,會有預設值0.

實際上,模型類中的限制,有些會體現在表結構中,有些卻不會立即體現出來.

comment = models.CharField(max_length=100, null=True, blank=True, verbose_name='描述資訊')
    book = models.ForeignKey(Book, on_delete=models.CASCADE, verbose_name='圖書')

這兩個欄位,在資料庫中就明顯體現了其作用: