美文网首页
django 判断语句

django 判断语句

作者: 木头的男人 | 来源:发表于2018-04-13 08:34 被阅读0次

    模型

    1、判断(判等) exact

    查询编号为1的图书

    BookInfo.book.filter(id=1)

    BookInfo.book.filter(id__exact=1)

    注意:exact可以省略

    2、模糊查询

    查询书名包含"传"的图书 contains

    BookInfo.book.filter(btitle__contains='传')

    查询书名以"射"开头

    BookInfo.book.filter(btitle__startswith='射')

    查询书名以狐结尾的

    BookInfo.book.filter(btitle__endswith='狐')

    3、空值查询 isnull

    查询书名不为空的图书

    BookInfo.book.filter(btitle__isnull=False)

    4、范围查询 where id in (1,3,5)

    查询编号为1或3或者5的图书

    BookInfo.book.filter(id__in=[1,3,5])

    5、比较查询 gt lt(less than) gte lte

    查询编号大于等于3的图书

    BookInfo.book.filter(id__gte=3)

    6、日期查询

    查询1980年发表的书

    BookInfo.book.filter(bpub_date__year=1980).values()

    查询1980年1月1日后发表的图书有几本书

    BookInfo.book.filter(bpub_date__gt = date(1980,1,1)).count()

    7、exclude:返回不满足条件的数据 --->filter取反

    查询所有id不为3的图书有多少本

    BookInfo.book.exclude(id=3).count()

    F对象

    查询图书阅读量大于评论量的图书信息

    BookInfo.book.filter(bread__gt = F('bcomment'))

    查询图书阅读量大于2倍的评论量的图书信息

    BookInfo.book.filter(bread__gt = F('bcomment')*2)

    Q对象

    查询id大于3且阅读量大于30的图书信息

    方案1、

    BookInfo.book.filter(id__gt=3,bread__gt=30)

    方案2

    BookInfo.book.filter(Q(id__gt=3)&Q(bread__gt=30))

    查询id大于3或者阅读量大于30的图书信息

    BookInfo.book.filter(Q(id__gt=3)|Q(bread__gt=30))

    查询id不等于3图书的信息

    BookInfo.book.filter(~Q(id=3))

    "负负得正"

    BookInfo.book.exclude(~Q(id=3)).values()

    order_by

    查询所有图书的信息,按照id从小到大进行排序。

    BookInfo.book.all().order_by('id').values()

    查询所有图书的信息,按照id从大到小进行排序。

    BookInfo.book.all().order_by('-id').values()

    把id大于3的图书信息按阅读量从大到小排序显示;

    BookInfo.book.filter(id__gt=3).order_by('-bread')

    聚合函数

    查询所有图书的数目 select count(*) from booktest_bookinfo;

    BookInfo.book.aggregate(Count('id'))

    查询所有图书阅读量的总和

    BookInfo.book.aggregate(Sum('bread'))

    统计id大于3的所有图书的数目

    BookInfo.book.filter(id__gt=3).aggregate(Count('id'))

    显示阅读量最大的书的书名

    BookInfo.book.all().order_by('-bread')[0]

    查询相关函数返回值总结

    get:返回一个对象all:QuerySet(也就是[])
    filter:QuerySet

    exclude:QuerySet

    order_by:QuerySet aggregate:字典count:值

    通过对象执行关联查询

    查询图书id为1的所有英雄信息

    b = BookInfo.book.get(id=1) b.heroInfo_set.all()

    查询id为1的英雄所属图书信息

    h = HeroInfo

    格式:

    1.由一类的对象查询多类的时候:一类的对象.多类名小写_set.all() #查询所用数据

    2.由多类的对象查询一类的时候:多类的对象.关联属性 #查询多类的对象对应的一类的对象

    3.由多类的对象查询一类对象的id时候:多类的对象. 关联属性_id

    相关文章

      网友评论

          本文标题:django 判断语句

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