Web2py orderby,limitby

时间:2014-12-18 15:47:06

标签: mongodb web2py

我的数据库层(MongoDB):

db.define_table('news', 
    Field('title', label='Title'),
    Field('link', label='Link'),
    Field('date', label='Date'),
    Field('summary',label='Summary'))

我的控制器:

def news():
    if len(request.args): page=int(request.args[0])
    else: page=0
    items_per_page=5
    limitby=(page*items_per_page,(page+1)*items_per_page+1)
    orderby="~date"
    qset = db(db['news'])
    grid = qset.select(orderby=orderby, limitby=limitby)
    return dict(grid=grid,page=page,items_per_page=items_per_page)

我的观点:

<table class="news-stories">
<th>Date</th>
<th>Title</th>
<th>Summary</th>
{{for i, row in enumerate(grid):}}
{{if i==items_per_page:break}}
<tr>
<td>{{=row.date.strftime("%m/%d/%Y")}}</td>
<td><a href="{{=row.link}}" target="_blank">{{=row.title}}</a></td>
<td>{{=row.summary}}</td>
</tr>
{{pass}}
</table>

{{if page:}}
<a href="{{=URL(args=[page-1])}}">previous</a>
{{pass}}

{{if len(grid)>items_per_page:}}
<a href="{{=URL(args=[page+1])}}">next</a>
{{pass}}

当我设置orderby="~date"orderby="date desc"时,如上例所示,我的日期未按顺序排列; 11月的某些日期是在12月的日期之后(反之亦然)。但是,当我设置orderby="date"时,日期按照asc顺序完美排序。我在这里错过了什么吗?

日期插入为datetime.datetime.strptime(date,"%m/%d/%Y")

1 个答案:

答案 0 :(得分:1)

应该是:

orderby = ~db.news.date

请参阅documentation

中的详细信息