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')) # 计算平均年龄