模型常用属性
1、在Django中定义了一些Field来与数据库表中的字段类型进行映射:即使用Field来定义表中列值的数据类型
2、在model中添加字段的格式一般为:field_name = field_type(**field_options)
AutoField
1、映射到数据库中是int类型,可以有自动增长的特性。支持最大长度为11的整数
2、一般不需要使用这个类型:如果不指定主键,那么模型会自动的生成一个叫做id的自曾主键。当然,如果想执行一个其他名字的并且具有自动增长的主键,使用AutoField也是可以的
BigAutoField
自增长类型,用法同AutoField。映射到数据库中会成为20位的bigint类型
CharField
1、字符串类型,映射到数据库中会转换成varchar类型,使用时必须传入max_length属性用于定义该字符串的最大长度
2、如果存入的字符串长度会超过254个字符,就不建议使用CharField了,此时建议使用TextField
BooleanField
1、在模型层面接收的是布尔类型(True/False),映射到数据库中会变成长度只有1位的tinyint类型(1/0)
2、这个Field不接受null参数,要想使用可以为null的布尔类型的字段,就要使用NullBooleanField
3、比如我们在设计一个数据库表,需要标记数据是否被删除时,就可以用到这个Field类型:在实际中一般不会真正的删除一个数据,只会在数据库中标记这个数据是"被删除"状态(数据还存在)
例1:
⑴编辑模型类
⑵查看表结构
⑶编辑视图:访问步骤就没截图了
⑷查看插入的数据
注:
1、在Django模型中:如果在定义字段的时候,如果没有指定null=True的话,那么默认情况下,null=False,即不能为空
2、上面例子中我们也没有设置null=True,但是能正常插入user1是因为我们在定义remove字段的时候设置了默认值:remove = models.BooleanField(default=False)
3、如果上面例子中在定义remove字段时,没有设置null=True和默认值时,就不能插入user1了:remove = models.BooleanField()
4、BooleanField没有null参数,如果需要设置null参数的话可以使用NullBooleanField
DateTimeField
1、日期时间类型,在python中对应的是datetime.datetime类型,在映射到数据库中也是datetime类型。使用这个Field可以传递以下几个参数:
⑴auto_now=True:在每次这个数据保存的时候,都使用当前的时间。比如作为一个记录修改日期的字段
⑵auto_now_add=True:在每条数据第一次被添加进去的时候,使用当前的时间。比如作为一个记录第一次入库的字段