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='图书')
这两个字段,在数据库中就明显体现了其作用: