Django 中模型models字段类型总结

 

字段类型:

下边字段类型是在django中使用ORM创建数据模型时,常用的字段类型总结:

1、AutoField

一个自增的IntegerField,想要自定义主键,那么primary_key必填。一般不直接使用,因为django会自动为每一张表添加自增主键(primary_key)

2、CharField

用来存储字符串,必须指定范围(在254个字符之内),如果存储大文本字符串(超过254个字符),应当用 TextField - 可存储任意长度的文本,对应数据库类型为 lonetext

如果不设置max_length, 会报错:

Django 中模型models字段类型总结_第1张图片

 

3、DateField

使用Python的datetime.date实例保存的日期,记录年月日,在映射数据库中也是date类型,使用这个字段类型可以传递以下几个参数

auto_now = True: 每次保存对象时,自动设置该字段为当前时间(可用于修改字段);

auto_now_add = True: 对象第一次被创建时自动设置当前的时间。需要注意的是:自动保存的时间的时区使用的是默认时区(可用于创建字段)。

模型中定义字段:

Django 中模型models字段类型总结_第2张图片

映射到数据库中得到的如下:

日期类型一般不会用到,保存时都会带上时间,所以下边DateTimeField 常用。

4、DateTimeField

使用Python的datetime.datetime实例表示日期和时间, 映射到数据库中是datetime类型。使用此字段类型可传以下参数:

模型中定义字段:

映射到数据库中如下:

5、TextField

存储大字符串(大于254个字符的),映射到数据库为:longtext类型。

6、

(1)BigIntegerField

64位整型,从-2^63 ( -9223372036854775808) 到 2^63-1 (9223372036854775807)

(2)IntegerField

整型,值区间为:-2147483648 —— 2147483647

7、BinaryField 

存储二进制的字段,只支持bytes赋值

8、BooleanField 

存储True 或 False,在数据库层面是:tinyint类型,如果没有指定默认值,默认值为None。如果此字段有可能为null值,你必须把类型设置为 NullBooleanField

否则,将会报错:

Django 中模型models字段类型总结_第3张图片

 

9、FloatField

存储浮点数的字段类型,用python的一个Float实例来表示浮点数。

10、UUIDField

用来存储UUID的字段。使用的是python的UUID类。

11、ForeignKey

多对一关系。

12、ManyToManyField

多对多关系。

13、OneToOneField

一对一关联关系。

14、DecimalField

用于计算价格或者金融项目存储金额时,所用的字段类型:表示固定精度的十进制数的货币字段。

两个必填参数:

(1)max_digits : 数字允许的做大位数;

(2)decimal_places: 小数的最大位数。

如:

# 要存储的数字为:最大长度为4位数,小数点后2位小数
models.DecimalField( max_digits=4, decimal_places=2 )

 

 

 

参数说明:

1、null = True - 数据库字段是否可为空,True可为空,默认情况下为:False不可为空。

注意:

如果在定义字段的时候,没有指定null=True,那么默认情况下,null=False,就是不能为空,否则将会报错!

2、blank = True - django的Admin中添加数据时是否允许为空值。与null的区别为:null是一个纯数据库级别的,而blank是表单验证级别的。

3、primary_key = False - 主键,对AutoField类型的字段设置主键后,就会代替原来自增id列。

如果您没有为模型中的任何字段指定primary_key=True, Django将自动添加一个IntegerField来保存主键,所以您不需要在任何字段上设置primary_key=True,除非您想要覆盖默认的主键行为。

4、auto_now= True - 每次保存或添加都会创建当前时间(可用于修改/编辑时间字段)

5、auto_now_add = True- 每次保存或添加都会保存第一次创建的时间(可用于创建时间字段)

6、max_length - 定义字符串最大长度。

7、default - 给字段定义默认值,注意:如果你想设置一个默认值,前提需要设置null=True。如果没传值,没设置null=True,即使你设置了默认值存到数据库中也是null。

8、unique = True - 不允许重复,如:用户密码等等。

9、auto_create = False - 自动创建。

10、upload_to - 文件上传指定的目录。

11、db_column - 可更改数据库中字段的名字,如果没有设置此字段,那么将会使用模型中属性的名字。

注意:更改完之后,需要执行迁移命令:

python manage.py makemigrations
python manage.py migrate

未完成,后续有时间再补充!

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Django,python)