1 常用的模型字段类型
官方文档链接:
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types
模型字段 | 类型 | 映射到数据库中类型 | 备注 |
IntegerField |
整型 |
int |
- |
CharField |
字符类型 |
varchar |
通过max_length指定最大长度 |
TextField |
文本类型 |
text |
- |
BooleanField |
布尔类型 |
tinyint |
使用时传递True/False |
DateField |
日期类型 |
date |
没有时间 |
DateTimeField |
日期时间类型 |
datetime |
使用时,传递datetime.datetime() |
|
注:DateField使用时,可以设置DateField.auto_now,每次保存对象时,自动设置该字段为当前时间。设置DateField.auto_now_add,当对象第一次被创建时自动设置当前时间。
2 字段的常用参数
官方文档链接:
https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options
参数 |
作用 |
primary_key |
指定是否为主键 |
unique |
指定是否唯一 |
null |
指定是否为空,默认为False |
blank |
等于True时form表单验证时可以为空,默认为False |
default |
设置默认值 |
DateField.auto_now |
每次修改都会将当前时间更新进去,只有调用,QuerySet.update方法将不会调用。这个参数只是Date和DateTime以及TimModel.save()方法才有的 |
DateField.auto_now_add |
第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值 |
|
3 常用查询
通过模型类上的管理器来构造QuerySet。
方法 |
作用 |
first() |
获取第一条 返回的是对象 |
last() |
获取最后一条 返回的也是一个对象 |
get(**kwargs) |
根据给定的条件,获取一个对象,如果有多个对象符合则报错 |
all() |
获取所有记录 返回的是queryset |
filter(**kwargs) |
根据给定的条件,获取一个过滤后的queryset,多个条件使用and连接 |
exclude(**kwargs) |
跟filter使用方法一致,作用相反,它是排除 |
Q |
多条件的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、lte |
小于、小于等于 |
startswith |
起始 |
istartswith |
起始(不区分大小写) |
endswith |
结束 |
iendswith |
结束(不区分大小写) |
isnull |
为空,True False 对应 IS NULL IS NOT NULL |
|
1 from django.db.models import Count, Avg, Max, Min, Sum
通过queryset的aggregate方法
1 Student.objects.aggregate(age_avg=Avg(‘age‘)) # 计算平均年龄
七、Django模型基础第二节——常用查询
原文:https://www.cnblogs.com/weixiansheng/p/10719918.html