web2py orderby datetime 乱序
web2py orderby datetime out of order
我正在用 web2py 编写一个简单的 Web 应用程序,用于存储和检索数据库中的一些数据。为了使条目按时间顺序排列,我的 table 有一个存储日期时间的属性。像这样:
db.define_table('tablename',
Field( ....
....
....
Field('created_on','datetime', default=request.now, writable=False),
Field('last_modified','datetime', default=request.now, update=request.now),
)
然后当我请求数据时,我将orderby属性设置为last_modified:
rows = db().select(db.tablename.ALL, orderby=db.tablename.last_modified)
然后,我将结果传递给 Json 字典对象。像这样:
I'm passing them into a JSON dictionary object.Like so:
d = { r.index_id : {'index_id':r.index_id,
....
....
'comments':r.comments,
'created_on':r.created_on,
'last_modified':r.last_modified}
for r in rows}
return response.json(dict(entry_dict=d))
当我从服务器得到响应时,我 return 向我的 ractive 对象发出指令。
MAIN.set('data_entries', data['entry_dict']);
然后,我在 ractive 中呈现结果:
{% #data_entries:index_id%}
<tr class = "datarow" onclick="window.document.location='{% url+ '/'+ index_id %}';">
<td>{% index_id %}</td>
....
<td>{% last_modified %}</td>
</tr>
{% /data_entries %}
然而,当数据被 returned 到 webapp 时,我得到以下结果:
我这样做对吗?
在Python中,字典不保留顺序,所以当你将d
字典转换为JSON时,你不一定会按照原来的Rows
对象。您可以改为使用 OrderedDict
,但看起来您并不真的需要字典——只需创建一个列表(使用 as_list
方法):
return response.json(dict(entry_dict=rows.as_list()))
然后在Ractive中,更改:
{% #data_entries:index_id %}
至:
{% #data_entries %}
您似乎不需要每个循环中的索引值。相反,您将能够访问每条记录的 index_id
字段作为该部分数据上下文的一部分。
我正在用 web2py 编写一个简单的 Web 应用程序,用于存储和检索数据库中的一些数据。为了使条目按时间顺序排列,我的 table 有一个存储日期时间的属性。像这样:
db.define_table('tablename',
Field( ....
....
....
Field('created_on','datetime', default=request.now, writable=False),
Field('last_modified','datetime', default=request.now, update=request.now),
)
然后当我请求数据时,我将orderby属性设置为last_modified:
rows = db().select(db.tablename.ALL, orderby=db.tablename.last_modified)
然后,我将结果传递给 Json 字典对象。像这样:
I'm passing them into a JSON dictionary object.Like so:
d = { r.index_id : {'index_id':r.index_id,
....
....
'comments':r.comments,
'created_on':r.created_on,
'last_modified':r.last_modified}
for r in rows}
return response.json(dict(entry_dict=d))
当我从服务器得到响应时,我 return 向我的 ractive 对象发出指令。
MAIN.set('data_entries', data['entry_dict']);
然后,我在 ractive 中呈现结果:
{% #data_entries:index_id%}
<tr class = "datarow" onclick="window.document.location='{% url+ '/'+ index_id %}';">
<td>{% index_id %}</td>
....
<td>{% last_modified %}</td>
</tr>
{% /data_entries %}
然而,当数据被 returned 到 webapp 时,我得到以下结果:
在Python中,字典不保留顺序,所以当你将d
字典转换为JSON时,你不一定会按照原来的Rows
对象。您可以改为使用 OrderedDict
,但看起来您并不真的需要字典——只需创建一个列表(使用 as_list
方法):
return response.json(dict(entry_dict=rows.as_list()))
然后在Ractive中,更改:
{% #data_entries:index_id %}
至:
{% #data_entries %}
您似乎不需要每个循环中的索引值。相反,您将能够访问每条记录的 index_id
字段作为该部分数据上下文的一部分。