Django入门教程(六):class中属性的完整性约束条件choices,default,editable

我是连人,本期我们分享上一期因为篇幅原因没有细讲的东西。

由于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间的关系。

转载注明出处。

发布了10 篇原创文章 · 获赞 1 · 访问量 731

猜你喜欢

转载自blog.csdn.net/mirocky/article/details/103950739