前言:这一部分是关于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()
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='明')
rs = User.objects.filter(name__in=['小明', '小红'])
rs = User.objects.filter(id__range=(12, 17))
rs = User.objects.filter(id__lt=15)
rs = User.objects.filter(id__lte=15)
rs = User.objects.filter(id__gt=15)
rs = User.objects.filter(id__gte=15)
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 |
第一次添加进去,会将当前时间设置进去 |