im actually wondering why calling .order() on a string property returns an 
ascii order and not a human expected order.
i understand that this is the default behaviour of most (all?) languages but 
who the hell would like an ascii order on a query?

lets say we store filenames as a StringProperty() and we want to order on them.

lets say the filenames are:
1.jpg
2.jpg
11.jpg
12.jpg

right now the order returned would be:
1.jpg
11.jpg
12.jpg
2.jpg

i actually dont know who actually would be happy with an order like that.

what it should return is:
1.jpg
2.jpg
11.jpg
12.jpg

of course!!!

right now i have to add a custom sort function to sort results in memory after 
fetching them. which also means i cant use this for batching and keys_only 
queries.
this is pretty sad!

this function helps:

def sort_nicely(l, reverse=False): 
    """ Sort the given list in the way that humans expect. """ 
    convert = lambda text: int(text) if text.isdigit() else text 
    alphanum_key = lambda entry: [convert(e) for e in re.split('([0-9]+)', 
entity.filename)] 
    l.sort(key=alphanum_key)
    if reverse:
        l.reverse()
    return l

so why not including a function like that into the query language?


-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to