美文网首页
2018-11-28djenv表的查

2018-11-28djenv表的查

作者: 叶叶阿姨 | 来源:发表于2018-11-28 12:21 被阅读0次
    模型查询
    模型成员objects

    Django默认通过模型的objects对象实现模型数据查询

    过滤器

    查询集表示从数据库获取的对象集合
    查询集可以有多个过滤器
    过滤器就是一个函数,基于所给的参数限制查询的结果
    从SQL角度来说,查询集合和select语句等价,过滤器就像where条件

    Django有两种过滤器用于筛选记录

    filter    : 返回符合筛选条件的数据集
    
    exclude   : 返回不符合筛选条件的数据集
    

    多个filter和exclude可以连接在一起查询

    当然还有如下这些过滤器:

    查询单个数据

    filter(条件): 查询满足条件的信息

    exclude(条件): 过滤掉满足条件的信息 排除查询 查询到不满足条件的

    get():返回一个满足条件的对象。如果没有返回符合条件的对象,会应该模型类DoesNotExist异常,如果找到多个,会引发模型类MultiObjectsReturned异常

    first():返回查询集中的第一个对象-->获取结果中的第一个

    last():返回查询集中的最后一个对象-->获取结果中的最后一个

    count():返回当前查询集中的对象个数

    exists():判断查询集中是否有数据,如果有数据返回True,没有返回False

    order_by():排序 - :降序 升序就不写

    values():获取对象的值

    模糊查询

    想让大小写不敏感就在前面加个i
    contains --> 大小写敏感
    icontains --> 大小写不敏感

    __contains='小':名字是否包含小,大小写敏感--->类似like '%小%' -->只要有小的

    __endswith='小':类似于like '%小' -->最后一个字是小的

    __startswith='小':类似于like '小%' -->第一个字是小的

    大于小于查询

    大于:__gt大于等于:get
    小于:__lt小于等于:lte

    范围: in
    主键: pk

    聚合函数

    agregate()函数返回聚合函数的值

    Avg:平均值

    Count:数量

    Max:最大

    Min:最小

    Sum:求和

    F对象/Q对象

    F对象:可以使用模型的A属性与B属性进行比较

    背景:在模型中有两个字段,分别表示学生成绩A与成绩B,要对成绩AB进行比较计算,就需要使用到F对象。

    例如有如下例子1:

    F对象支持算数运算

    grades = Grade.objects.filter(girlnum__gt=F('boynum') + 10)
    

    例子2:

    Q对象:

    Q()对象就是为了将过滤条件组合起来

    当我们在查询的条件中需要组合条件时(例如两个条件“且”或者“或”)时。我们可以使用Q()查询对象

    使用符号&或者|将多个Q()对象组合起来传递给filter(),exclude(),get()等函数

    Q()对象的前面使用字符“~”来代表意义“非”

    模型一对一

    定义一对一: OneToOneField()

    class A:
        b1 =  OneToOneField(B)
    
    class B():
        name = CharField()
    

    正向查询,已知A对象a,查询B对象: a.b1

    反向查询,已知B对象b,查询A对象: b.a

    相关文章

      网友评论

          本文标题:2018-11-28djenv表的查

          本文链接:https://www.haomeiwen.com/subject/gyeaqqtx.html