Django基础篇 03- Models的属性与字段
阅读原文时间:2023年07月08日阅读:1

AutoField():一个IntegerField,根据可用ID自动递增。如果没指定主键,就创建它自动设置为主键。

IntegerField():一个整数;

FloatField:浮点型

CharField(max_length = 20):字符串字段,字段最大长度为20

DateField(verbose_name='创建时间',auto_now=False, auto_now_add=False):日期;参数auto_now:每次保存对象时,自动设置该字段为当前时间。用于"最后一次修改"的时间戳. 注意,它总是使用当前日期, 默认为False。参数auto_now_add:当对象第一次被创建时自动设置当前时间。用于创建时间的时间戳. 它总是使用当前日期,默认为False;参数auto_now auto_now_add default是互相排斥的,组合会发生错误

TImeFiled():时间,参数同DateField

TextField():一个很长的的文本字段

BooleanField():布尔字段,True或False;

NullBooleanField():值为Null,True,False;

FileField():上传文件字段

ImageField():用于上传图片并验证图片合法性,需定义upload_to参数,使用本字段需安装pip install pillow图片库;设置upload_to 到某个目录下,需要在settings.py中配置多媒体文件路径: MEDIA_ROOT = os.path.join(BASE_DIR,'static'); models.ImageField(upload_to="article_img" )表示会将从static目录下的article_img文件夹上传图片

OneToOneField(to, on_delete, parent_link = False):一对一

ForeignKey(to, on_delete):一对多

ManyToManyField(to):多对多

null:如果设置为True,当该字段为空时,Django会将数据库中该字段设置为NULL。默认为False 。

blank:如果设置为True,该字段允许为空。默认为False。

default:该字段的默认值。可以是一个值或者是个可调用的对象,如果是个可调用对象,每次实例化模型时都会调用该对象。

primary_key:如果设置为 True ,将该字段设置为该模型的主键。

unique:如果设置为 True,这个字段的值必须在整个表中保持唯一。

verbose_name:任何字段类型都接收一个可选的位置参数,如果未指定Django会自动使用字段的属性名作为该参数值,并且把下划线转换为空格。

max_length:设置默认长度,一般在CharField、TextField、EmailField等文本字段设置

choices:设置该字段的可选值,本字段的值是一个二维元素的元祖;元素的第1个值为实际存储的值,第2个值为HTML页面显示的值

upload_to:设置上传路径,ImageField和FileField字段需要设置此参数,如果路径不存在,会自动创建

db_index:索引,一般常用来做查询的字段设置为索引,设置为True表示设置索引

db_constraint:ForeignKey /ManyToManyField/OneToOneField时有这个字段,为False时表示不受母表约束,母表删除数据时外键不受影响

on_delete:ForeignKey /ManyToManyField/OneToOneField时有这个字段有这个字段,一般值为models.DO_NOTHING时表示母表删除数据时,外键不做任何处理,经常和db_constraint=False连用

verbose_name:设置对象名称(例如usecms),若没有设置,则默认为该类名的小写分词形式,例如类名为CamelCase会被转换为camel

verbose_name_plural:设置对象名称复数(例如usercms),一般设置跟verbose_name一样,verbose_name_plural=verbose_name否则会默认加s;
db_table:设置映射的数据表名,默认为“应用名_模型名”,即用该模型所在app的名称加本模型类的名称

ordering :排序规则,按照哪个字段排unique_together序,加上负号是降序 ,ordering = ['id','-create_time']

unique_together :联合主键 unique_together = ('name','id_card')
proxy:设置True or False,设置本模型及所有继承本模型的子模型是否为代理模型;
abstract:设置True or False,设置本模型类是否为抽象基类;如果是抽象基类,那么是不会创建这张表的,这张表用来作为基类被其他的表继承