filter筛选:
是查询出符合设定条件的查询集
等于:直接筛选
双下划线 __
大于: __gt
举例:
筛选比创建日期大的日期(加上last()就是大的日期最后一条),并且返回一个值
created_time__gt=con.
created_time__gt=con.created_time
context["previous_blog"] = Blog.objects.filter(created_time__gt=con.created_time).last()
大于等于: __gte
小于: __lt
小于等于:__lte
包含: __contains(加 i 忽略大小写)
开头是 : __startswith
结尾是 : __endswith
其中之一 : __in
范围 : __range
exclude筛选:
是查询出不符合设定条件的查询集
查询方法一样
大于: __gt
context["previous_blog"] = Blog.objects.exclude(created_time__gt=con.created_time)
这样查询出来的查询集是:返回的值是创建时间不大于本条信息创建时间的值
filter筛选的拓展使用:
context["year"] = Blog.objects.filter(created_time__year=2017)
筛选出年份为2017年的,
car_messages.filter(Q(car_out_time__month=month) | Q(car_out_time__day=day)):
获取当前时间的方法:
month = datetime.datetime.now().strftime("%m") # 当前月 都是转换成字符串,可以直接与数据库日期进行对比
day = datetime.datetime.now().strftime("%d") # 当前日
time = datetime.datetime.now().strftime("%Y-%m-%d") # 当前年月日, print(car_messages.filter(car_out_time__lte=today).count())
if car_messages.filter(Q(car_out_time__lte=time)):
print(car_messages.filter(Q(car_out_time__lte=time) | (Q(car_out_time__day=month) & Q(car_out_time__day=day))).count())
context["SUCCESS"] = "success"
# 这个牛逼,直接获取当前日期,进行加减获取哪一天日期,直接可以与数据库日期进行对比。
# 获取明天的时间,先获取当天的时间减去 -1 就是明天的信息
today = timezone.now().date() - datetime.timedelta(days=-1)