一、 AutoField(Field) int自增列,必须填入参数 primary_key=Truegit
二、BigAutoField(AutoField) bigint自增列,必须填入参数 primary_key=Truesql
注意:当model中若是没有自增列,则自动会建立一个列名为id的列数据库
三、SmallIntegerField(IntegerField) 小整数 -32768 ~ 32767django
四、PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) 正小整数 0 ~ 32767云计算
五、IntegerField(Field) 整数列(有符号的) -2147483648 ~ 2147483647url
六、PositiveIntegerField(PositiveIntegerRelDbTypeMixin, IntegerField) 正整数 0 ~ 2147483647spa
七、BigIntegerField(IntegerField) 长整型(有符号的) -9223372036854775808 ~ 9223372036854775807code
八、BooleanField(Field) 布尔值类型orm
九、NullBooleanField(Field) 能够为空的布尔值server
十、CharField(Field) 字符类型
必须提供max_length参数, max_length表示字符长度
十一、TextField(Field) 文本类型
十二、EmailField(CharField) 字符串类型
Django Admin以及ModelForm中提供验证机制(即邮件字段,能够验证输入邮件格式是否正确)
1三、IPAddressField(Field) 字符串类型
Django Admin以及ModelForm中提供验证 IPV4 机制(即ip字段,能够验证输入IP是否正确)
1四、GenericIPAddressField(Field) 字符串类型
Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
参数:
protocol:用于指定Ipv4或Ipv6,其值为:'both',"ipv4","ipv6"
unpack_ipv4:若是指定为True,则输入::ffff:10.0.0.1时候,可解析为10.0.0.1,开启刺功能,须要protocol="both"
1五、URLField(CharField) 字符串类型(即邮件字段,能够验证输入的url否是一个合法url)
Django Admin以及ModelForm中提供验证 URL
1六、SlugField(CharField) 字符串类型
Django Admin以及ModelForm中提供验证支持 字母、数字、下划线、链接符(减号)
1七、CommaSeparatedIntegerField(CharField) 字符串类型
格式必须为逗号分割的数字
1八、UUIDField(Field) 字符串类型
Django Admin以及ModelForm中提供对UUID格式的验证
1九、FilePathField(Field) 字符串类型
Django Admin以及ModelForm中提供读取文件夹下文件的功能
参数:
path:文件夹路径
match=None:正则匹配
recursive=False:递归下面的文件夹
allow_files=True:容许文件
allow_folders=False:容许文件夹
20、FileField(Field) 字符串类型
路径保存在数据库,文件上传到指定目录
参数:
upload_to = "" 上传文件的保存路径
storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
2一、ImageField(FileField) 字符串类型
路径保存在数据库,文件上传到指定目录
参数:
upload_to = "" 上传文件的保存路径
storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
width_field=None 上传图片的高度保存的数据库字段名(字符串)
height_field=None 上传图片的宽度保存的数据库字段名(字符串)
2二、DateTimeField(DateField)
日期+时间格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]
2三、DateField(DateTimeCheckMixin, Field)
日期格式 YYYY-MM-DD
2四、TimeField(DateTimeCheckMixin, Field)
时间格式 HH:MM[:ss[.uuuuuu]]
#日期字段经常使用的参数
auto_now:这个参数的默认值为false,设置为true时,可以在保存该字段时,将其值设置为当前时间,而且每次修改model,都会自动更新。所以这个参数在须要存储"最后修改时间"的场景下,十分方便。须要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被"强制"更新到当前时间,你没法从程序中手动为字段赋值;若是使用django再带的admin管理器,那么该字段在admin中是只读的。若是用django filter的update则是由于直接调用sql语句 不经过 model层, 因此不会自动更新带有auto_now的字段,若是想更新字段;能够经过update(..., update_time=datetime.datime.now())
auto_now_add:这个参数的默认值也为False,设置为True时,会在model对象第一次被建立时,将字段的值设置为建立时的时间,之后修改对象时,字段的值不会再更新。该属性一般被用在存储"建立时间"的场景下。与auto_now相似,auto_now_add也具备强制性,一旦被设置为True,就没法在程序中手动为字段赋值,在admin中字段也会成为只读的
2五、DurationField(Field) 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
2六、FloatField(Field) 浮点型
2七、DecimalField(Field) 十进制小数
参数:
max_digits 小数总长度
decimal_places 小数位长度
2八、BinaryField(Field) 二进制类型
2九、models.ForeignKey(other_table) 建立外键(即建立一对多的表的关联)
参数:
to=: 要进行关联的表名
to_field=: 要关联的表中的字段名称
on_delete=: 当删除关联表中的数据时,当前表与其关联的行的行为
on_delete的参数:
- models.CASCADE 删除关联数据,与之关联也删除
- models.DO_NOTHING 删除关联数据,引起错误IntegrityError
- models.PROTECT 删除关联数据,引起错误ProtectedError
- models.SET_NULL 删除关联数据,与之关联的值设置为null(前提FK字段须要设置为可空)
- models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提FK字段须要设置默认值)
- models.SET 删除关联数据
30、models.ManyToManyField(other_table) 建立多对多的表的关联
3一、models.OneToOneField(other_table) 建立一对一的关联
null 数据库中字段是否能够为空
db_column 数据库中字段的列名
db_tablespace 表空间,若是该字段已经建立了索引,那么数据库表空间的名称将做为该字段的索引名。注意,部分数据库不支持表空间
default 数据库中字段的默认值
primary_key 数据库中字段是否为主键
db_index 数据库中字段是否能够创建索引
unique 数据库中字段是否能够创建惟一索引
unique_for_date 数据库中字段【日期】部分是否能够创建惟一索引
unique_for_month 数据库中字段【月】部分是否能够创建惟一索引
unique_for_year 数据库中字段【年】部分是否能够创建惟一索引
verbose_name Admin中显示的字段名称
blank Admin中是否容许用户输入为空
editable Admin中是否能够编辑
help_text Admin中该字段的提示信息
choices Admin中显示选择框的内容,用不变更的数据放在内存中从而避免跨表操做
如:course = models.IntegerField(choices=[(0, '云计算'),(1, 'Linux'),],default=1)
error_messages 自定义错误信息(字典类型)从而,定制想要显示的错误信息
字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
如:{'null': "不能为空.", 'invalid': '格式错误'}
validators 自定义错误验证(列表类型),从而定制想要的验证规则(例子以下)
from django.core.validators import RegexValidator from django.core.validators import EmailValidator,URLValidator,DecimalValidator,MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator test = models.CharField( max_length=32, error_messages={ 'error1': '错误信息1', 'error2': '错误信息2', 'error3': '错误信息3', }, validators=[ RegexValidator(regex='root_\d+', message='出错误了', code='e1'), RegexValidator(regex='root_hehe\d+', message='又出错误了', code='e2'), EmailValidator(message='又又出错误了', code='e3'), ] )
一、简单建立表
from django.db import models class ServerType(models.Model): serverName = models.CharField(max_length=32, unique=True
二、简单表关联
from django.db import models class ServerType(models.Model): serverName = models.CharField(max_length=32, unique=True) class Host(models.Model): hostname = models.CharField(max_length=32, unique=True) ip = models.GenericIPAddressField(protocol='ipv4') servertype = models.ForeignKey(to='ServerType',to_field='id',on_delete=models.CASCADE) detail = models.TextField() create_date = models.DateTimeField('建立日期', auto_now_add=True) mod_date = models.DateTimeField('更新日期', auto_now=True)
一、增
方式一
models.Host.objects.create(hostname='xx',ip='xx',...) #增长一条数据,能够接受字典类型数据 **kwargs
方式二
obj = models.Host(hostname='xx',ip='xx',...) obj.save()
二、删
models.Host.objects.filter(hostname='xxx').delete() #删除指定条件的数据
三、改
models.Host.objects.filter(hostname='xx').update(ip='xxx') #将指定条件的数据更新,均支持 **kwargs obj = models.Host.objects.get(id=1) obj.ip = 'xx' obj.save() #修改单条数据
四、查
models.Tb1.objects.get(id=1) # 获取单条数据,不存在则报错(不建议使用) models.Tb1.objects.all() # 获取所有 models.Tb1.objects.filter(name='seven').first() # 获取指定条件的数据