django的orm操作优化
1. 尽量不查对象,能用values就用values 使用values查询只执行了一条SQL,会自动连表查询
2. 在进行多对一,一对一查询添加select_related()方法,括号中是外键字段,会进行连表查询,通过减少SQL查询的次数来进行优化,提高性能。
3. 在进行多对一,多对多查询是可使用prefetch_related()方法
4. only()指定查询字段,查询时指定某些字段查询,使用only指定字段只会差我们需要的那个字段
5. defer()查询时指定排序某些字段和only相反,如果排除的字段,还要查会增加查询负担,当然查询指定字段之外的字段也会增加查询负担。
django查询之单表查询
model.table.objects.filter(id__lt=10,id__gt=1) # 获取id大于1 且小于10得值
model.table.objects.filter(id__in=[11,22,33]) # 获取id等于11,22,33的数据
model.table.objects.exclude(id__in=[11,22,33]) # not in
model.table.objects.filter(name__contains='ven') # 获取name字段包含ven 的
model.table.objects.filter(name__icontains='ven') # icontains 对大小写不敏感
model.table.objects.filter(id__range=[1,3]) # id 范围是1到3的
# 类似的关键字还有
startswith 查询以什么开头的
istartswith 忽略大小写
endswith 查询以什么结尾的
iendswith 忽略大小写的
model操作
1. 字段
AutoField() int自增列,必须填入参数 primary_key=True
BigAutoField(AutoField) bigint自增列,必须填入参数primary_key = True
SmallIntegerField(IntegerField) 小整数
PositiveSmallInternetField 正小整数
IntegerField 整数列
PositiveInternetField 正整数
BigIntegerField 长整数
BooleanField 布尔值类型
NullBooleanField 可以为空的布尔值
CharField 字符串类型 必须提供max_length参数,max_length 表示字符长度
TextField 文本类型
EmailField 字符串类型 Django Admin以及ModelForm中提供验证机制
IPAddressField 字符串类型,Django Admin 以及ModelFrom提供验证IPV4 机制
GenericIPAddressField 字符串类型 Django Admin 以及ModelFrom提供验证IPV4 和 IPV6 机制
URLField 字符串类型 Django Admin以及ModelForm中提供验证URL
SLugField 字符串类型, Django Admin 以及ModelForm 中提供验证支持字母,数字,下划线,连接符
CommaSeparatedIntegerField 字符串类型格式,必须为逗号分割的数字
UUIDField 字符串类型,Django Admin以及ModelForm中提供UUID格式的验证
FieldPathField 字符串 django Admin以及ModelForm中提供读取文件夹下的功能 参数 : path ,文件夹路径, match=None,正则匹配 , recursive=False 递归下面的文件夹 allow_files = True ,允许文件, allow_folders = False 允许文件夹
FileField 字符串,路径保存在数据库,文件上传到指定目录 参数 upload_to = '' 上传文件的保存路径,storage = None 存储组件,默认django.core.files.storage.FileSystemStorage
ImageField 字符串,路径保存在数据库,文件上传到指定目录 参数 upload_to = '' 上传文件的保存路径,storage = None 存储组件,默认django.core.files.storage.FileSystemStorage width_field=None, 上传图片的高度保存的数据库字段名, height_field = None 上传图片的宽度保存的数据库字段名
DateTimeField 日期+ 时间格式
DateField 日期格式
TimeField 时间格式
DurationField 长整数,时间间隔,数据库中按照bigint存储,ORM中获取的值为datetime.timedelta类型
FloatField 浮点数
DecimalField 10 进制小数
BinaryField 二进制类型
2020年上半年 沙雕搞笑锦集
1. 听信网络上“日用品断货”谣言 ,香港3男子持刀抢劫600余卷厕纸
2. 美国男孩误吞AirPod无线耳机,不敢离手机太近,担心耳机在胃里播放音乐
3. 常州一男子为寻求刺激,先后四次裸体卧轨,称其最后关头躲开火车时,得到了前所未有的快感
4. 郑州一女子因疫情坚持不外出,后来为防感染去药店买双黄连,结果在药店被感染
5. 佛山一男子在街上,抢夺一女子的手机,旁边几米外派出所里的值班民警,立即冲向疑犯,仅48秒就将疑犯抓获
字段参数
- null 数据库中的字段是否为空
- db_column 数据库中字段的列名
- default 数据库中字段的默认值
- primary_key 数据库中的字段是否为主键
- db_index 数据库中字段是否可以建立索引
- unique 数据库中字段是否可以建立唯一索引
- verbose_name 在Admin中显示的字段名称
- blank Admin中是否允许用户输入为空
- editable Admin 中是否可以编辑
- help_text Admin中该字段的提示信息
- choices Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作。
- error_messages 自定义错误信息,从而顶定制想要显示的错误信息
- validators 自定义错误验证,从而定制想要的验证规则
2020年上半年 沙雕搞笑锦集
- 男子不顾民警劝阻围观车祸现场,称“我的命我有数”,结果几分钟后被来往车辆撞骨折
- 上海一位母亲辅导儿子写作业,气得跳河轻生,面对救援时竟称“,不要救我,我真的太累了”
-
泰国一女子因心情不好轻生跳河,由于太会游泳无法成功,只好边哭边游、又游了回来
-
南京一名年轻男子落水,因为觉得人太多不好意思呼救,在湖里漂流两天才被警方救起
-
杭州一公司组织徒步越野赛,为防抄近路作弊,规定没收手机只带一张地图,结果18人被困山上
元信息
在model中有一个meta的类:
# 数据库中生成的表名称 默认 app名称+下划线+类名
db_table = 'tuble_name'
# 联合索引 index_together = {("pub_date":"deadline")}
# 联合唯一索引 unique_together = (('driver':'restaurant'))
# admin 中显示的表名称
verborse_name