2019-12-06
我的笔记
模型对应一张表,
--里面有字段,
--字段里面有字段类型。
常用的字段类型映射关系:
int---IntegetField
varchar---CharField
longtext---TextField
date---DateField
datetirne----DatelimeField
Field的常用参数:
primary_key:指定是否为主耀,
unique:指定是否唯-
null:指定是否为空,默认为False,
blank:等于True时form表单验证时可以为空,默认为False,
default:设置默认值。
Daterield.auto now:每次修改都会格当前时间更新进去,只有调用,QuerySet.update方法将不会调用。这个参数只是Date和DateTimel以及TimModel.save0方法才会调用e类才有的。
Datefield.auto now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值
老师笔记
1、常用的模型字段类型
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
2,字段的常用参数
官方文档:https://docs.djangoproject.com/en/2.1/ref/models/#fields/field-option.
案例:
3,常用查询
通过模型类上的管理器来构造Queryset
-模型类上的管理器是啥?
模型类.objects
-Queryset表示数据库中对象的集合。
等同于select语句。惰性的
案例:
-first()获取第一条返回的是对象
-last()获取最后一条返回的也是一个对象 I
思考:排序规则?默认通过主键。通过meta设置
-get(**kwargs)根据给定的条件,获取一个对象,如果有多个对象符合,则报错
-all()获取所有记录返回的是queryset
-filter(**kwargs)根据给定的条件,获取一个过滤后的queryset,多个条件则用and连接
-exclude(**kwargs)跟filter使用方法一致,作用相同,它是排除。
-多条件的OR连接用到Q对象,django.db.models.Q
-values(*fields)返回一个queryset,返回一个字典列表,而不是数据对象。
-only(*fiels)返回queryset,对象列表,注意only一定包含主键字段
-defer(*fields)返向一个Queryset,作用和only相反
-order by(*fields)根据给定的字段来排序默认是顺序,字段名前加上‘-’,代表反序。
-切片和python的列表切片用法相似,不支持负索引,数据量大时不用步长
***切片过后,不再支持,附加过滤条件与排序
-常用查询条件filter,exclude,get
exact,iexact ,contains ,icontains ,in ,range ,gt ,gte,lt ,Ite ,startswith ,istartswith ,endswith, iendswith ,isnull True False ---对应IS NULL Is NOT NULL
-istartswith
from django.db.models import count,Avg,Max,Min,Sum
通过queryset的aqqreqate方法
student.objects.aggregate(ageavg-Avg(‘age‘))#计算平均年龄
-count
-平均值Avg
-分组,聚合
结合values,annotate和聚合方法一起实现
查询男生有几个,女生有几个
4,表关系实现
结合Values,annotate和聚合方法一起实现
查询男生有几个,女生有几个
原文:https://www.cnblogs.com/youshiqiezhenxi/p/12000141.html