See below: On Wednesday, September 7, 2016 at 5:30:49 PM UTC-7, Peter wrote: > > My first question and I hope it's not a dumb one! > > My controller retrieves a number of rows from a table and I use *orderby= > 'start_time' *to sort the list into date order. > I can see this produces the desired result because when I output the rows > to the log file the dates appear in the required order > > 'start_time': datetime.datetime(2016, 8, 1, 19, 0) >> 'start_time': datetime.datetime(2016, 8, 8, 19, 0), >> 'start_time': datetime.datetime(2016, 8, 15, 15, 0) >> 'start_time': datetime.datetime(2016, 9, 6, 15, 52, 20) >> > > The rows object is then passed to a view.html > >> return dict( inv_lines=inv_lines )* (along with two other objects >> omitted for clarity)* >> > > However in the view, looping through the view's inv_lines object the date > order has changed > and it produces this output... > > 'start_time': datetime.datetime(2016, 8, 1, 19, 0) >> 'start_time': datetime.datetime(2016, 8, 8, 19, 0) >> 'start_time': datetime.datetime(2016, 8, 15, 15, 0) >> 'start_time': datetime.datetime(2016, 9, 6, 15, 52, 20) >> 'start_time': datetime.datetime(2016, 8, 2, 16, 0) >> > > I can see that the view is actually sorting the rows by id but I can't > figure out how to override it? > > Is there an easy way to do so? > > Thanks! >
What does your loop look like? Python dictionaries do not guarantee any particular ordering. Python lists do, and the DAL Rows object is a special subclass of a list, and your inv_list should have the ordering that your query gave it, and the dict you wrap it in should have inv_list as its first (and only) element, and the view processor should preserve that to give you same order. If you do (as in the book ... Chapter 6) {{=inv_list}} this will be translated to {{=SQLTABLE(inv_list)}} which should display things in the proper order. An explicit for-loop (if you need finer layout control), it could look something like <ul> {{for i in range(0,len(inv_list)):}} {{=LI(inv_list[i])}} {{pass}} </ul> which should be equivalent to <ul> {{for inv_item in inv_list:}} {{=LI(inv_item)}} {{pass}} </ul> If this doesn't answer your question, please post your view code so we can give better answers. /dps -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.