zoukankan      html  css  js  c++  java
  • django模型二

    django模型二


    • 常用模型字段类型
      • IntegerField   →    int
      • CharField   →   varchar
      • TextField  →    longtext
      • DateField  →   date
      • DateTimeField   →   datetime
      • AutoField  →    int  (自增长)

     

    • Field的常用参数
      • primary_key:是否设置为主键
      • unique:是否唯一
      • null:指定是否为空,默认是False
      • blank:等于True时form表单验证时可以为空,默认False
      • default:设置默认值
      • DateField.auto_now:每次修改都会将当前时间更新进去,只有调用:QuerySet.update方法将不会调用,这个参数只是Date和DateTime以及TimModel.save()方法会调用类的时候才有的
      • DateField.auto_now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值
    • 常用查询
      • 通过模型类上的管理器(模型类.objects)来构造QuerySet(数据库中对象的集合:select语句)
      • all() :获取所有记录  返回的是queryset,支持切片
      • first() :获取的是第一条记录,返回的是对象
      • last():获取最后一条,返回的是对象
      • get(**kwargs):根据给定的条件,获取一个对象,如果有多个对象符合,则会报错
      • fillter(**kwargs):根据给定的条件,获取一个过滤后的queryset
      • exclude(**kwargs):和fillter的作用相反
      • 多条件的QR连接,用到Q对象 (django.db.models.Q)
        • from django.db.models import Q
        • 模型类.objects.fillter(Q(age=0)|Q(age=1))
      • values(*filed):返回一个queryset,返回一个字典列表,而不是数据对象only(*filed):返回queryset,对象列表,注意only返回一定包含主键字段
        • 模型类.objects.values(字段变量名)
        • 可通过列表取值的方法直接取出value
      • defer(*field):用法和only一样,作用和only相反
      • onder_by:根据给定的字段排序,默认从小到大;倒序只需在所要查询的字段的前面加上一个减号就好了
      • 切片:和Python的列表切片用法相似,不支持负索引,数量大时不用步长
        • 切片之后,不在支持附加过滤条件与排序

          

    • 常用聚合条件查询
      • exact       //支持 get   fillter     exclude
        • 准确匹配
          • 模型类.objects.get(id__exact=0)
            • 查询该表里的id=0的信息
      • iexact
        • 不区分大小写的匹配(模糊匹配)
      • contains
        • 包含匹配,找到包含所传入的对象的值
      • icontains
        • 不区分大小写的包含匹配
      • in
        • 给定范围查询,返回查到的对象
          • 模型类.objects.get(id__in=[给定的范围])
      • range
        • 给定的范围查询,返回所有范围对象
          • 模型类.objects.get(id__range(给定的范围)
      • gt
        • 查询大于某一范围的对象并返回
          • 模型类.objects.get(id__gt=给定的值)
      • gte
        • 查询大于等于某一范围的值并返回
          • 模型类.objects.get(id__gte=给定的值)
      • lte
        • 查询小于等于某一范围的值并返回
      • lt
        • 查询小于某一范围的值并返回
      • startswith
        • 查询以某某开头的对象并返回
        • 大小写敏感
      • istartwith
        • 查询以某某开头的对象并返回
        • 大小写不敏感
      • endswith
      • iendswith
      • isnull

        

    • 聚合查询
      • from django.db.models import Avg, Max, Count, Sum
      • count   // 计数
        • 可跟不同的对象结合使用
          • 模型类.objects.get(id__gte=给定的值).count()
          • 模型类.objects.all().count()
      • avg  // 平均数
        • 模型类.objects.aggregate(age_avg=Avg('age'))
          • 查询年龄的平均数
      • max
        • 模型类.objects.aggregate(age_max=Max('age'))
      • min
      • sum
      • aggregate里面的键可以是任意的,如果不写,则默认为聚合查询的key_加上函数名的小写
        • 如:
          • 模型类.objects.aggregate(age=Max('age'))
          • 模型类.objects.aggregate(age2=Max('age'))
          •  
    • 分组查询
      • 模型类.objects.values('sex').annotate(Count('sex')
  • 相关阅读:
    移动端疫情展示
    第四周学习总结
    构建之法阅读笔记二
    第三周学习总结
    AJAX学习篇
    jQuery学习篇
    软件工程开课第二周——介绍篇
    【Spring】DispatcherServlet的启动和初始化
    【设计模式】模板方法模式小解
    【Mybatis】MyBatis调用带有返回结果、output参数的存储过程上与ibatis的区别
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/10697242.html
Copyright © 2011-2022 走看看