django-7-django模型系统

<<<常用的模型字段类型>>>

https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-types  InterField

 CharFiled

 TestFiled

 DateFiled

 AutoFiled(primary_key=True)自增,不指定主键会自动创建   
在使用的时候何以设置DateField.auto_now每次自动保存对象的时候自动设置改字段为当前时间,设置DateField.auto_now_add当对象第一次被创建时自动设置当前时间

 DateTimeFiled
<<<常用的字段参数>>>

https://docs.djangoproject.com/en/2.1/ref/models/fields/#field-options primary_key

auto_dreated

unique指定是否为唯一

auto_now
<<<常用查询>>>

 通过模型类上的管理器来构造

 模型类上的管理器(class.objects)  queryset (惰性,,没有操作数据库)表示数据库中对象的集合,等同于select 语句

  query 获取mysql 语句  first() 获取第一条,返回对象

 last() 获取最后一条,返回对象

 get(**kwargs) 根据给定的条件获取一个对象,如果有多个对象符合则报错

 all() 获取所有记录

 filter(**kwargs) 根据给定的条件获取过滤后的queryset,多个条件用’,’连接

 exclude(**kwargs) 作用和filter相反,去除不符合条件的对象  多条件的or连接

 from django.db.models import Q

 Q(age=1) | Q(age=0)  返回某个字段

 values(*fileds) field指定字段,返回一个queryset,返回一个‘字典列表’

 only(*fields) 与values差不多,返回queryset,‘对象列表’,必须带上主键

 defer(*field) 和only功能相反,用法一样,返回一个queryset,对象列表,排除
 排序

 order_by(*fields) 根据给定的字段来排序

  如果要反序就在field前加’-‘  切片 和python切片用法相似,不支持复索引,数据大的时候不用步长

 ***切片后不再支持附加条件与排序  *多字段排序有什么用?*
 常用查询条件

 > < =

 通过’__’ 使用

 exact 默认等于

 iexact 不区分大小写的匹配

 contains

 icontains 不区分大小写

 in name__in = [‘aa’,’ss’,’dd’]

 range age__range = (18, 20)

 gt 大于

 gte 大于等于

 lt

 lte

 startswith

 istartswith

 endswith

 iendswith

 isnull True False
 聚合

 django.db.models import Count, Avg, Max , Min, Sum(通过管理器的aggregate方法)  count 计数

 平均 aggregate(age_avg = Avg(‘age’))
 分组

 查询男生有几个,女生有几个

 结合 values , annotate(num = Count(‘sex’))  **复杂查询**

 from django.db.models.functions import lower  order_by(lower(‘name’).desc())  

    原文作者:记不得的样子
    原文地址: https://www.cnblogs.com/wmkpy/p/10567458.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞