叶觉的Django之旅【06-常用查询、字段、参数】

前言:这一部分是关于05,查询方法的补充,主要内容为django的常用查询介绍以及字段参数的使用介绍。如需查询如何使用,请翻到《叶觉的Django之旅05》

常用查询方法

  • 前一章用到的查询方法一览
def select(request):
    # 查询所有
    rs = User.objects.all()
    # 查询单个对象
    rs = User.objects.get(id=1)
    # 查询满足条件的对象
    rs = User.objects.filter(name='小明')
  • 补充的查询
    • order_by,传入需要排序的字段,可以传入多个,以从左到右确认排序优先度,在传入字段加入 “-” 号,为反向排序。
    • __exact 在 sql 层面相当于 “=”,如 “where name=‘yejue’ "。
    • __iexact 在 sql 层面相当于 “like”,如 like “yejue”。
    • __in,在 sql 层面相当于 “in”,即in查询可查询包含在in内的所有符合条件数据。
    • __range,一个数字区间,对于range来说,如range(10, 20),两边都是闭区间即数学表达{x|10<= x <= 20}
# 查询第一条数据
rs = User.objects.first()
# 查询最后一条数据
rs = User.objects.last()
# 排除查询,查询不满足条件的数据
rs = User.objects.exclude(name='小红')
# 查询排序
rs = User.objects.order_by('-id')
# 查询结果数据转化为字典
rs = User.objects.all().values()
# 查询结果计数
rs = User.objects.all().count()
# 条件查询
# exact 和 iexact
rs = User.objects.filter(name__exact='yejue')
rs = User.objects.filter(name__iexact='yejue')
# 以...开头,以...结尾
rs = User.objects.filter(name__startswith='小')
rs = User.objects.filter(name__endswith='明')
# 成员所属,in 查询
rs = User.objects.filter(name__in=['小明', '小红'])
# range 数字区间查询
rs = User.objects.filter(id__range=(12, 17))
# 大于 > ,大于等于 >= , 小于<, 小于等于 <=
rs = User.objects.filter(id__lt=15)   # 小于15
rs = User.objects.filter(id__lte=15)   # 小于等于15
rs = User.objects.filter(id__gt=15)   # 大于15
rs = User.objects.filter(id__gte=15)   # 大于等于15
  • 在django中使用 or 查询
# 使用or条件查询
from django.db.models import Q
rs = User.objects.filter(Q(name='小明') | Q(id=15))

常用的字段类型

字段类型 介绍
IntegerField 整型,对应 int
CharField 字符型,对应 varchar,需指定最大长度
TextField 文本类型,对应 text,可以不指定最大长度
BooleanField 布尔型,对应 tinyint,使用 NullBooleanField 表示可为空
DateField 日期类型,date。可以设置DateField.auto_now,每次保存对象时,自动设置为当前时间
DateTimeField 日期时间类型, datetime。使用时传入一个datetime.datetime()

Field的常用参数

参数名 介绍
primary_key 主键
unique 唯一
null 指定是否可以为空,默认不为空
blank 等于True时,form表单验证时可以为空
default 默认值
DateField.auto_now 每次修改都会将时间更新为当前时间,使用QuerySet.update方法将不会更新,只有date和datetime以及 model.save()放方式才会使用该更新。
DateField.auto_new_add 第一次添加进去,会将当前时间设置进去
发布了24 篇原创文章 · 获赞 18 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_39177678/article/details/103495810
今日推荐