Django框架中models的DateTimeField类型在MySQL数据库中插入的时间格式是“2019-02-16 10:25:04.186496”。
使用普通的ORM查询语句,输出的DateTimeField字段是“datetime.datetime(2019, 2, 16, 10, 8, 44, 642364)”。
如果你使用模版渲染的话,可以在前端页面使用过滤器格式化DateTimeField,获取正确的时间格式,例如:{
{ infor.updatetime|date:“Y-m-d H:i:s” }}。
但是,如果我们想通过ajax json获取DateTimeField字段时就会报错,DateTimeField不能直接转换成json。
办法一
使用 for 循环去遍历查询结果,在 for 循环内使用 .strftime(’%Y-%m-%d %H:%M:%S’) 去格式化时间,然后转换成json。
如:
res_list = []
for i in data_obj:
i['inTime'] = i['inTime'].strftime('%Y-%m-%d %H:%M:%S')
res_list.append(i)
comment_obj.create_time.strftime("%Y-%m-%d %H:%M")
高效的办法
首先确定,Django的原生查询是不支持直接输出格式化后的日期的,那么我们只能使用MySQL的函数了。
使用 extra 可以很好的解决这个问题,使用 extra 可以执行 MySQL 的函数。extra 的内容大家可以自行百度。
list_raw = models.testTable.objects.filter(disable=0)\
.extra(select={"inTime": "DATE_FORMAT(inTime, '%%Y-%%m-%%d %%H:%%i:%%s')"})\
.values('id', 'showName', 'inTime').order_by('-inTime')
extra 在django orm中使用复杂的sql语句
extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
有些情况下,Django 的查询语法难以简练地表达复杂的 WHERE 子句。对于这种情况,Django 提供了 extra() QuerySet 修改机制...
Django框架的ORM查询操作详解1. 一般操作普通查询单表查询之神奇的双下划线多表查询之神奇的双下划线2. ForeignKey操作正向查找反向操作3. ManyToManyField4. 聚合查询5. 分组查询6. F查询和Q查询7. 事务8. Django终端打印SQL语句9. 在Python脚本中调用Django环境10. 其他操作Django ORM执行原生SQLQuerySet方法...
<1> all(): 查询所有结果,QuerySet 对象列表
<2> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<3> filter(**kwargs): ...
转自:http://www.nanerbang.com/article/5488/
创建django的model时,有DateTimeField、DateField和TimeField三种类型可以用来创建日期字段,其值分别对应着datetime()、date()、time()三中对象。这三个field有着相同的参数auto_now和auto_now_add,表面上看起来很easy,但实际使...
最近在使用django的时候遇到一个问题,模型的一个字段是DateTimeFiled类型,并且auto_now_add=True,在做业务的时候,需要通过这个事件来检索信息,问题就出现了:
DateTimeFiled类型字段在数据库存储格式是:2019-12-05 17:00:48.997827
而业务中查询使用的是字符串:2019-12-05 17:00:48
这时候使用django的O...
www.jx-lab.com
python 中 date,datetime,time对象都支持strftime(format)方法,但有一些区别:
1.date ,会省略 时、分、秒、毫秒
2.time ,会省略 年、月、日
下面是三种对象的格式化示例:
1.日期格式化
code:
from datetime import date
d=date(2014,12,11)
print(d)
print(d.strftime(’%Y-%m-%d’)
output:
datetime.date(2014,12,1
DateTimeField
日期时间字段,格式 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例,因此格式化时间非常简单
stime = vm_info.ctime #这是从数据库获取的时间,类型为datetime.datetime
print(stime.strftime('%Y-%m-%d %H:%M:%S'))
select={"y-m-date": "date_format(create_time,'%%Y-%%m')"}).values_list("y-m-date").annotate(
c=Count("nid")).values_list("y-m-date", "c")
首先明确:当我们利用ORM框架,通过datetimeFields字段创建存储的时间格式,都是结构化类型。当我们操作或是显示的时候都会选择格式化类型或是时间戳,所以这就出现了时间转换的问题,也就衍生了这篇文章的诞生!一、MySQLblog = models.Blog.objects.filter(site=site).first()dtimes = models.Article.objects.fi...
&amp;amp;amp;amp;amp;lt;1&amp;amp;amp;amp;amp;gt; all(): 查询所有结果
&amp;amp;amp;amp;amp;lt;2&amp;amp;amp;amp;amp;gt; filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
&amp;amp;amp;amp;
django的data过滤器,格式化太坑,网上介绍的有特别细,其实我只想找个年月日时分,这基本是最常用的了,
代码 {{ article.date_publish | date:'Y-n-d H:i ' }}显示效果如下
发表于 2016-12-30 06:46