49.ORM模型常用的Field

模型常用属性字段类型:

1.AutoField:

  • 映射到数据库中是int类型可以自动增长,一般不需要使用这个类型,如果不指定主键,那么模型会自动生成一个叫做id的自动增长的主键。如果你想要指定一个其他的名字的,并且具有自动增长的主键,使用AutoField也是可以的。

2.BigAutoField:

  • 64位的整形,类似于AutoField,只不过是产生的数据的范围是比较大的。
  • 如果想要使用自己定义的字段作为主键,一定要设置primary_key=True,否者的话,就不会生效。

3.BoolenField:

  • 在模型层面接收的是True/False。在数据库层面是tinyint类型,如果没有指定默认值,默认值是None.
  • 如果在定义字段的时候,没有指定null=True,默认情况下为False。
  • 如果想要设置字段为BollleanField()类型的,并且在没有设置默认值,没有传入值的时候,设置为空,就要指定null=True.
class Article(models.Model):
	removed = models.BooleanField(null=True)
  • 此时就会报错:article.Article.removed:(fields.E110) BooleanFields do not accept null values.
  • 出现这种问题就可以使用NullBooleanField()函数进行代替BooleanField()。
  • 所以如果你的BooleanField可以为空,就要用NullBooleanField()类型 。

4.CharField:

  • 在数据库层面varchar类型,在Python层面就是普通的字符串,这个类型在使用的时候必须指定最大的长度,也就是必须要传递max_length这个关键字参数进去。
  • CharField如果超过了254个字符,就推荐使用TextField类型,longtext

5.DateField:

  • 日期类型,在Python中是datetime.date类型,可以记录为年月日。在映射到数据库中也是date类型。使用这个Field可以传递以下几个参数:
  • 1.auto_now:在每次这个数据保存的时候,都会使用当前的时间,比如作为一个记录修改日期的字段,可以将这个属性设置为True。
  • 2.auto_now_add:在每次数据第一次被添加进去的时候,都会使用当前的时间,比如作为一个记录第一次入库的字段,可以将这个属性设置为True。

6.DateTimeField:

  • 日期时间类型,类似于DateFiled。不仅可以存储日期,还可以存储时间,映射到数据库中是datetime类型,这个Field也可以使用auto_now和auto_now_add两个属性。

7.TimeField:

  • 时间类型。在数据库中time类型。在Python中datetime类型。

8.EmailField:

  • 类似于CharField。在数据库中也是一个varchar类型,在数据库层面并不会进行一层验证,只有以后在使用modelform模型表单进行 验证的时候,才会起作用。

9.FileField:

  • 用来存储文件的。

10.ImageField:

  • 用来存储图片文件的。可以参考后面的图片上传章节部分。

11.FloatField:

  • 浮点类型。映射到数据库中是float类型。

12.IntegerField:

  • 整形。

13.BigIntegerField:

  • 大整形。

14.PositiveIntegerField:

  • 正整形。

15.SmallIntegetField:

  • 小整形

16.PositiveSmallIntegerField:

  • 正小整形

17.TextField:

  • 大量的文本类型

18.UUIDField:

  • 只能存储uuid格式的字符串。uuid是一个32位的全球唯一的字符串。一般作为主键。

19.URLField:

  • 类似于CharField,只不过只能用来存储url格式的字符串,并且默认的max_length=200.

注意:EmailField、UUIDField、URLField可以存储任意格式的字符串,但是在做表单验证的时候,会判断存储的字符串类型是否合法

发布了120 篇原创文章 · 获赞 28 · 访问量 4687

猜你喜欢

转载自blog.csdn.net/zjy123078_zjy/article/details/104041123