zoukankan      html  css  js  c++  java
  • ORM查询(细致):

    ORM查询(细致):
    1.正向查找
    ret1=model.Book.objects.first()
    print(ret1.title)
    print(ret1.price)
    print(ret1.publisher)
    print(ret1.publisher.name) #因为一对多的关系所以ret1.publisher是一个对象,而不是一个queryset集合
    2.反向查找:通过_set创建关联再查询
    ret2=models.Publish.objects.last()
    print(ret2.name)
    print(ret2.city)
    print(obj.book_set.values("title").distinct())
    如何拿到与它绑定的Book对象呢?
    print(ret2.book_set.all()) #ret2.book_set是一个queryset集合
    3.了不起的下划线(__)之单表条件查询
    models.Tb1.objects.filter(id__lt=10,id__gt=1) #获取id大于1且小于10
    models.Tb1.objects.filter(id__in=[11,22,33]) #获取id等于11、22、33的数据
    models.Tb1.objects.exclude(id__in=[11,22,33]) # not in
    models.Tb1.objects.filter(name__contains="ven")
    models.Tb1.objects.filter(name__icontains="ven") # icontains 大小写不敏感
    models.Tb1.objects.filter(id__range=[1,2])
    startswith,istartswith,endswith,iendswith(以...开头,以...结尾)
    4.了不起的下划线(__)之多表条件关联查询
    .distinct()去重
    条件里面可以通过 , 添加其它条件
    models.Publish.objects.filter(book__title="python").values("name").distinct()
    models.Publish.objects.filter(book__title="python",book_red='red').distinct().values("name")
    ` values()方法里面也可以查找显示关联表的内容__也可用
    聚合查询aggregate():一个对象--子句的参数描述叙述了我们想要计算的聚合值
    分组查询annotate():多个对象--是QoerySet的一个终止子句,意思是说,他返回一个包含一些键值对的字典。键的名称是
    聚合值的标识符,值是计算出来的聚合值。键的名称是按照字段和聚合函数的名称自动生成出来的。
    如果你想要为聚合值指定一个名称,可以向聚合子句提供它
    Avg('')取平均值
    5.F查询与Q查询
    调用 from django.db.models import F 对列的数值进行操作 无法用__进行修改值
    models.Publish.objects.all().update(price=F("price")+20)
    调用 from django.db.models import Q 很重要
    obj=models.Book.objects.filter(Q(price__gt=50) & (Q(id=3) | Q(title='php')))[0]
  • 相关阅读:
    最近一月研报推荐次数最多的最热股票
    【2019年07月22日】A股最便宜的股票
    【07月19日】指数估值排名
    北上资金近1周流入排行榜
    主要股东近3年净买入排名
    【07月16日】A股滚动市净率PB历史新低排名
    【07月15日】A股滚动市盈率PE最低排名
    最近3年股息率最高排名
    主要股东近3年净买入排名
    【07月09日】预分红股息率最高排名
  • 原文地址:https://www.cnblogs.com/wylshkjj/p/11228399.html
Copyright © 2011-2022 走看看