我是连人,本期我们分享上一期因为篇幅原因没有细讲的东西。
由于Django中强大的ORM,此处的完整性约束条件主要指用户自定义的完整性约束条件。
(照抄一下百度百科的定义:
数据完整性约束指的是为了防止不符合规范的数据进入数据库,在用户对数据进行插入、修改、删除等操作时,DBMS自动按照一定的约束条件对数据进行监测,使不符合规范的数据不能进入数据库,以确保数据库中存储的数据正确、有效、相容。
简单来说就是规定一些数据不能进数据库。详细还是去学数据库吧)
在上篇中,我列举了常用的约束,像null=True这种简单的就不介绍了,接下来直接贴代码,一口气把choices,default,editable的规则说清楚。
class Share(models.Model):
gender_type = {
(0, 'girl'),
(1, 'boy'),
}
gender = models.IntegerField(choices=gender_type)
writer = models.CharField(max_length=20, default='Lirito') # CharField必须有max_length选项
hidden = models.CharField(max_length=20, default='YouCan\'tSeeMe', editable=False)
name = models.CharField(max_length=20, primary_key=True) # 这个遵从主键约束
create_time = models.DateTimeField(auto_now_add=True) # 这个是上篇讲Field忘讲了
def __str__(self):
return self.name
增加了新的Class后不要忘了数据库迁移:
打开admin界面进入我们刚定义的share类看到如下页面:
这是我之前脑袋watered写的editable=True的界面:
这才是editable=False的界面:
接下来逐个讲解。
choices: 这里我使用了用数字替代准确指代的方法,属性定义的是int类,而我希望这个数字代表着一定的意义。使用这个方法方便了查找和遍历,因为元素是数字而不是字符串。
如果要得知这个数字代表的意义,请使用下面的语法:
share.get_gender_display
share是Share类的一个实例,gender是指定的有choices字段的选项。
default: 没啥说的,就是注意默认值要符合Field的类型
扫描二维码关注公众号,回复:
8799223 查看本文章
editable: True是可编辑,False才是不可编辑
DateTimeField: auto_now_add 自动将当前时间添加。
如果想只显示年月日的话:
share.create_time|date:'Y-m-d'
下一篇大概讲class间的关系。
转载注明出处。