django ORM 操作记录

查询语法要点

#查询user所有记录 id=1 的数据,返回的是一个列表,
user=User.objects.all().filter(id=1)
#查询user表 条件id=1 的数据,返回的是一个列表,
user=User.objects.filter(id=1)
#查询user表 条件id=1 并且没有删除 的数据,返回的是第一个对象
user=User.objects.filter(id=1,is_delete=False).first()
#查询user表 条件id=1 的数据,返回的是一个唯一的对象,里面的条件只能是一个,
user=User.objects.get(id=1)
#查询user表 条件id=1 的数据,并且对返回的数据进行排序,这里是安装date排序,如果是-date那么就是反向的排序
user=User.objects.filter(id=1).order_by('date')

下面列举django orm中的常用查询的筛选方法:

大于、大于等于

__gt 大于
__gte 大于等于

User.objects.filter(age__gt=10)    // 查询年龄大于10岁的用户
User.objects.filter(age__gte=10)  // 查询年龄大于等于10岁的用户

小于、小于等于

__lt 小于
__lte 小于等于

User.objects.filter(age__lt=10)     // 查询年龄小于10岁的用户
User.objects.filter(age__lte=10)   // 查询年龄小于等于10岁的用户

in

__in

查询id在某一范围的用户
User.objects.filter(id__in=[10, 20, 30])

like

__exact        精确等于 like 'aaa'
__iexact       精确等于 忽略大小写 ilike 'aaa'
__contains     包含 like '%aaa%'
__icontains    包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。
#例:查询用户名字里面包含 文 的并且没有删除的数据
user = User.objects.filter(name__icontains='文',is_delete=False)

is null / is not null

__isnull 判空

User.objects.filter(username__isnull=True)    // 查询用户名为空的用户
User.objects.filter(username__isnull=False)  // 查询用户名不为空的用户

不等于/不包含于

User.objects.filter().exclude(age=10)    // 查询年龄不为10的用户
User.objects.filter().exclude(age__in=[10, 20])  // 查询年龄不为在 [10, 20] 的用户

其他模糊查询

__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日

Django使用or条件查询:

from django.db.models import Q

User.objects.filter(Q(state=0) | Q(state=1))

猜你喜欢

转载自blog.csdn.net/haeasringnar/article/details/81003087