首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django基础篇-查询字段

Django基础篇-查询字段

作者头像
小团子
发布2019-07-18 11:08:45
1.7K0
发布2019-07-18 11:08:45
举报
文章被收录于专栏:数据云团数据云团
  • 常用的查询
  • Field 的常用参数
  • 常用的模型字段类型

①常用的查询

  • 获取所有记录:

rs = User.objects.all()

  • 获取第一条数据:

rs = User.objects.first()

  • 获取最后一条数据:

rs = User.objects.last()

  • 根据参数提供的条件获取过滤后的记录:

rs = User.objects.filter(name="yuntuan")

注意:filter(**kwargs)方法:根据参数提供的提取条件,获取一个过滤后的 QuerySet。

  • 排除 name 等于 yuntuan 的记录:

rs = User.objects.exclude(name="yuntuan")

  • 获取一个记录对象:

rs = User.objects.get(name="yuntuan")

注意:get返回的对象具有唯一性质,如果符合条件的对象有多个,则 get 报错!

  • 对结果排序 order_by:

rs = User.objects.order_by("age")

  • 多项排序:

rs = User.objects.order_by("age", "id")

  • 逆向排序:

rs = User.objects.order_by("-age")

  • 将返回来的 QuerySet 中的 Model 转换为字典

rs = User.objects.all().values()

  • 获取当前查询到的数据的总数:

rs = User.objects.count()

# 查询对象的条件

查询对象的条件的意思是传给以上方法的一些参数。相当于是 SQL 语句中的 where 语句后面的条件,语法为“字段名__规则”:

  • exact 相当是等于号:

rs = User.objects.filter(name__exact="yuntuan")

iexact 跟 exact ,只是忽略大小写的匹配。

  • contains 包含:

rs = User.objects.filter(name__contains="yuntuan")

icontains 跟 contains ,唯一不同是忽略大小写。

  • startswith 以什么开始:

rs = User.objects.filter(name__startswith="yuntuan")

istartswith 跟 startswith,只是忽略大小写。

  • endswith:同 startswith,以什么结尾。

iendswith 跟 istartswith,以什么结尾,忽略大小写。

  • in 成员所属:

rs = User.objects.filter(age__in=[18,19,20])

  • gt 大于:

rs = User.objects.filter(age__gt=20)

  • gte 大于等于:

rs = User.objects.filter(age__gte=20)

  • lt 小于:

rs = User.objects.filter(age__lt=20)

  • lte 小于等于:

rs = User.objects.filter(age__lte=20)

  • range 区间:

rs = User.objects.filter(age__range=(18,20))

  • isnull 判断是否为空:

rs = User.objects.filter(country__isnull=True)

  • 切片:

rs = User.objects.all()[:2]

注意:不能使用负数作为切片。

② Field 的常用参数

  • primary_key:指定是否为主键。
  • unique:指定是否唯一。
  • null:指定是否为空,默认为 False。
  • blank:等于 True 时 form 表单验证时可以为空,默认为 False。
  • default:设置默认值。
  • DateField.auto_now:每次修改都会将当前时间更新进去,只有调用 Model.save() 方法才会调用,QuerySet.update 方法将不会调用。这个参数只是 Date 和 DateTime 以及 Time 类才有的。
  • DateField.auto_now_add:第一次添加进去,都会将当前时间设置进去。以后修改,不会修改这个值。

③常用的模型字段类型

  • IntegerField:整型,映射到数据库中的 int 类型。
  • CharField:字符类型,映射到数据库中的 varchar 类型,通过 max_length 指定最大长度。
  • TextField:文本类型,映射到数据库中的 text 类型。
  • BooleanField:布尔类型,映射到数据库中的 tinyint 类型,在使用的时候,传递 True/False 进去。如果要可以为空,则用 NullBooleanField。
  • DateField:日期类型,没有时间。映射到数据库中是 date 类型,在使用的时候,可以设置 DateField.auto_now 每次保存对象时,自动设置该字段为当前时间。设置 DateField.auto_now_add 当对象第一次被创建时自动设置当前时间。
  • DateTimeField:日期时间类型。映射到数据库中的是 datetime 类型,在使用的时候,传递 datetime.datetime() 进去。

例子:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档