zoukankan      html  css  js  c++  java
  • django ORM常用查询条件

    假设有一个模型

    class Article(models.Model):
        title=models.CharField(max_length=50)
        content=models.TextField()
        class Meta:
            db_table='book'

    对于查询结果是结果集,即通过filter进行查询所得的对象来说,可通过query属性来查看django转换之后的原生sql语句

    ……
    article=Article.objects.filter(title='Hello World')
        print(article.query)
        print(article)
    ……

    查询结果为

    exact:即相当于数据库底层的等号=

    article=Article.objects.filter(title__exact='Hello World'),即相当于数据库底层的select ··· from ··· where title='Hello World'

    iexact:即相当于数据库底层的like

    article=Article.objects.filter(title__iexact='Hello World'),即相当于数据库底层的select ··· from ··· where title like 'Hello World'

    contains:大小写敏感的匹配查询,也是like,注意转换后查询条件的两侧都有%

    article=Article.objects.filter(title__contains='Hello World'),即相当于数据库底层的select ··· from ··· where title like '%Hello World%'

    icontains:大小写不敏感的匹配查询

    article=Article.objects.filter(title__icontains='Hello World'),即相当于数据库底层的select ··· from ··· where title like '%Hello World%'

    in:查询条件是否在给定的范围内,用小括号和中括号都可以

    article=Article.objects.filter(id__in=(1,2,6,9)),即相当于数据库底层的select ··· from ··· where id in (1,2,6,9)

    gt:大于

    gte:大于等于

    lt:小于

    lte:小于等于

    article=Article.objects.filter(id__gt=5),即相当于数据库底层的select ··· from ··· where id > 5

    startswith:以指定某个字符串开始,大小写敏感

    istartswith:以指定某个字符串开始,大小写不敏感

    endswith:以指定某个字符串结束,大小写敏感

    iendswith:以指定某个字符串结束,大小写不敏感

    article=Article.objects.filter(title__startswith='Hello'),即相当于数据库底层的select ··· from ··· where title like 'Hello%'

    article=Article.objects.filter(title__endswith='Hello'),即相当于数据库底层的select ··· from ··· where title like %'Hello'

    range:在某个范围,即相当于between ··· and ···,用小括号和中括号都可以

    article=Article.objects.filter(id__range=(1,6)),即相当于select ··· from ··· where id between 1 and 6

    isnull:是否为空

    article=Article.objects.filter(content__isnull=False),即相当于select ··· from ··· where content is not null

    exclude:排除满足条件的

    article=Article.objects.exclude(content=False)

    order_by 按指定字段正向排序

    article=Article.objects.all().order_by('title')

    reverse:反向排序

    distinct:去重

    article=Article.objects.all().values('title').distinct()

  • 相关阅读:
    android+Path+Paint+PathEffect
    阿里云 云磁盘挂载
    android+Bitmap + options
    Java反射篇学习笔记
    Java中的异常处理
    jdbc连接sql server2017进行简单的增、删、改、查操作
    浅谈java中接口与抽象类之间的异同
    关于java中的“error: bad operand types for binary operator ”
    解析Java中final关键字的各种用法
    关于java中“使用了未经检查或不安全的操作、有关详细信息,请使用 ——Xlint:unchecked重新编译”
  • 原文地址:https://www.cnblogs.com/Forever77/p/10165158.html
Copyright © 2011-2022 走看看