django orm查询语句,django 字段类型
Django ORM 常用字段和参数:
1.常用字段:
#自动字段
Int自增列,参数primary_key=True必须填写。如果模型中没有自行添加的列,将自动创建一个名为id的列。
#IntegerField
范围在-2147483648到2147483647之间的整数类型。(一般不用它来存储手机号(位数不够),用一个字符串存储就行)
#CharField
类型,必须提供max_length参数,max_length表示字符长度。
提示:Django的CharField对应的是MySQL数据库中的varchar类型。没有为相应的char类型设置字段,但是Django允许我们定制新的字段。下面,我将自定义数据库对应的char类型。
#应用上述自定义字符类型
classClass(模型。型号):
id=型号。AutoField(primary_key=True)
标题=模型。CharField(max_length=32)
class _ name=RealCharField(max _ length=16)
Gender_choice=((1,男性)、(2,女性)、(3,机密))
gender=models . smallingerfield(choices=gender _ choice,default=3)。需要注意的是,实际项目应用中可能会经常用到自定义字段,所以这里需要注意。
#日期字段
日期字段,日期格式YYYY-MM-MD,例如:2019年6月12日,相当于Python中datetime.date()的实例。
#日期时间字段
格式字段为yyyy-mm-ddhh3360mm [3360ss [。uuuuuu]] [tz],相当于Python中datetime.datetime()的实例。
推荐:《Python视频教程》2.字段合集:
自动字段(字段)
-int是自己加的,必须填写参数primary_key=True。
大自动字段(自动字段)
-bigint自动添加列,必须填写参数primary_key=True。
注意:如果模型中没有自添加列,将自动创建一个名为id的列。
fromdjango.dbimportmodels
classUserInfo(型号。型号):
#自动创建一个具有列名id和自增量的整数列。
用户名=型号。CharField(max_length=32)
类别组(模型。型号):
#自定义自添加列
nid=模型。AutoField(primary_key=True)
名称=型号。CharField(max_length=32)
SmallIntegerField(Int
egerField):
-小整数-32768~32767
PositiveSmallIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)
-正小整数0~32767
IntegerField(Field)
-整数列(有符号的)-2147483648~2147483647
PositiveIntegerField(PositiveIntegerRelDbTypeMixin,IntegerField)
-正整数0~2147483647
BigIntegerField(IntegerField):
-长整型(有符号的)-9223372036854775808~9223372036854775807
BooleanField(Field)
-布尔值类型
NullBooleanField(Field):
-可以为空的布尔值
CharField(Field)
-字符类型
-必须提供max_length参数,max_length表示字符长度
TextField(Field)
-文本类型
EmailField(CharField):
-字符串类型,DjangoAdmin以及ModelForm中提供验证机制
IPAddressField(Field)
-字符串类型,DjangoAdmin以及ModelForm中提供验证IPV4机制
GenericIPAddressField(Field)
-字符串类型,DjangoAdmin以及ModelForm中提供验证Ipv4和Ipv6
-参数:
protocol,用于指定Ipv4或Ipv6,'both',"ipv4","ipv6"
unpack_ipv4,如果指定为True,则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"
URLField(CharField)
-字符串类型,DjangoAdmin以及ModelForm中提供验证URL
SlugField(CharField)
-字符串类型,DjangoAdmin以及ModelForm中提供验证支持字母、数字、下划线、连接符(减号)
CommaSeparatedIntegerField(CharField)
-字符串类型,格式必须为逗号分割的数字
UUIDField(Field)
-字符串类型,DjangoAdmin以及ModelForm中提供对UUID格式的验证
FilePathField(Field)
-字符串,DjangoAdmin以及ModelForm中提供读取文件夹下文件的功能
-参数:
path,文件夹路径
match=None,正则匹配
recursive=False,递归下面的文件夹
allow_files=True,允许文件
allow_folders=False,允许文件夹
FileField(Field)
-字符串,路径保存在数据库,文件上传到指定目录
-参数:
upload_to=""上传文件的保存路径
storage=None存储组件,默认django.core.files.storage.FileSystemStorage
ImageField(FileField)
-字符串,路径保存在数据库,文件上传到指定目录
-参数:
upload_to=""上传文件的保存路径
storage=None存储组件,默认django.core.files.storage.FileSystemStorage
width_field=None,上传图片的高度保存的数据库字段名(字符串)
height_field=None上传图片的宽度保存的数据库字段名(字符串)
DateTimeField(DateField)
-日期+时间格式YYYY-MM-DDHH:MM[:ss[.uuuuuu]][TZ]
DateField(DateTimeCheckMixin,Field)
-日期格式YYYY-MM-DD
TimeField(DateTimeCheckMixin,Field)
-时间格式HH:MM[:ss[.uuuuuu]]
DurationField(Field)
-长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
FloatField(Field)
-浮点型
DecimalField(Field)
-10进制小数
-参数:
max_digits,小数总长度
decimal_places,小数位长度
BinaryField(Field)
-二进制类型
对应关系:
3.字段参数:
#null :用于表示某个字段可以为空
#unique :如果设置为unique = True 则该字段在此表中必须是唯一的
# db_index :如果db_index = True 则代表着为此字段设置索引
# default :为该字段设置默认值
4.DateField和DateTimeField:
#auto_now_add
配置auto_now_add = True,创建数据记录的时候会把当前时间添加到数据库,后续操作数据不自动更新
#auto_now
配置上auto_now = True,每次更新数据记录的时候会更新该字段
5.关系字段:
#①ForeignKey
外键类型在ORM中用表示外键关联关系,一般吧ForeignKey字段设置在‘一段多’中的多的一方,ForeignKey可以和其它表做关联关系同时也可以和自身做关联关系。
#字段参数:
##to 设置要关联的表
##to_field 设置要关联的表的字段
##on_delete 当删除关联表中的数据时,当前表与其关联的行的行为
models.CASCADE (Django2.x版本必须要设置,1.x版本默认就设置了)
删除关联数据,与之关联也删除
##db_constraint 是否在数据库中创建外键约束,默认为True
models.DO_NOTHING
示例:
deffunc():
#②OneToOneField
一对一字段
通常一对一字段用来扩展已有字段。(通俗的说就是一个人的所有信息不是放在一张表里面的,简单的信息一张表,隐私的信息另一张表,之间通过一对一外键关联)
#字段参数:
##to 设置要关联的表
##to_field 设置要关联的表的字段
##on_delete 当删除关联表中的数据时,当前与其关联的行的行为(参考ForeignKey)
#③ManyToManyField
多对多字段
#字段参数:
##to 设置要关联的表
##to_field 设置要关联的表的字段
##on_delete 当删除关联表中的数据时,当前与其关联的行的行为
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。