标签:总结 提取数据 time for 描述 delete sql语句 插入 允许
from django.db import models
# 在定义模型的类时,一定要继承models.Model
class Category(models.Model):
# 设置字段的最大长度为100
name = models.CharField(max_length=100)
# 重新定义该类的一些属性
class Meta:
# 自定义表名
db_table = 'category'
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# 设置删除的时候为级联删除
category = models.ForeignKey('Category', on_delete=models.CASCADE, null=True)
# 设置auto_now_add=True,就会将所有数据的该属性的初始值设置为添加数据时的时间,并且允许为空值
create_time = models.DateTimeField(auto_now_add=True, null=True)
# 重写__str(self)方法
def __str__(self):
return "<(Article: id: %s,title: %s, content: %s)>" % (self.id, self.title, self.content)
# 重新定义该类的一些属性
class Meta:
db_table = 'article'
from .models import Article, Category
from django.http import HttpResponse
from datetime import datetime
def index(request):
# 设置一个开始日期,采用datetime()方法,并且为参数传递相应的值
start_date = datetime(year=2020, month=2, day=5, hour=2)
# 设置一个结束日期
end_date = datetime(year=2020, month=2, day=5, hour=23)
# 使用range查询条件查找在一定时间段的文章
# 为模型所形成的表的字段规定相应的查询条件,可以使用“字段名__查询条件”=‘value’,进行查询
articles = Article.objects.filter(create_time__range=(start_date,end_date))
# 打印出django底层执行的sql语句
print(articles.query)
# 打印出符合时间段的QuerySet对象
print(articles)
return HttpResponse('success !')
SELECT article
.id
, article
.title
, article
.content
, article
.category_id
, article
.create_time
FROM article
WHERE article
.create_time
BETWEEN 2020-02-05 02:00:00 AND 2020-02-05 23:00:00
<QuerySet [<Article: <(Article: id: 1,title: Hello, content: 你好)>>, <Article: <(Article: id: 2,title: Hello World, content: 大家好)>>, <Article: <(Article: id: 3,title: 钢铁是怎样炼成的, content: 你好
)>>, <Article: <(Article: id: 4,title: 中国吸引力, content: 精彩极了)>>]>
# 从django.utils.timezone模块中导入make_aware()函数
from django.utils.timezone import make_aware
# 执行make_aware()函数将navie time 转换为active time。
start_date = make_aware(datetime(year=2020, month=2, day=5, hour=2))
end_date = make_aware(datetime(year=2020, month=2, day=5, hour=23))
SELECT article
.id
, article
.title
, article
.content
, article
.category_id
, article
.create_time
FROM article
WHERE article
.create_time
BETWEEN 2020-02-04 18:00:00 AND 2020-02-05 15:00:00 : 此时我们的时间就会变成“Asia/Shanghai”时区的时间。
总结:在提取数据的时候要使用django.utils.timezone.make_aware 先将datetime.datetime 从naive时间转变为aware时间,make_aware会将给定的时间转换为TIME_ZONE中指定的失去的时间。
67.ORM查询条件:range的使用,使用make_aware将navie time 转换为aware time
标签:总结 提取数据 time for 描述 delete sql语句 插入 允许
原文地址:https://www.cnblogs.com/guyan-2020/p/12263093.html