i had to look up common_filters.....based on your experience i would assume 
that this is being implemented as a query filter rather than getting 
results from the DB and then filtering them.  so what is must be causing in 
your case is:

posts = db((db.posts.id.belongs(post_ids)) & 
(db.posts.post_date<=request.now)).select(db.posts.ALL,orderby=db.posts.post_date,
 cache
=(cache.ram, 60))

it *might* work if you put an orderby on that is 
db.posts.id|db.posts.post_date  i'm not sure.  you might have to remove the 
common filter for this query and then filter the results. (i don't have 
experience with common filters and how they are implemented)

GAE has a restriction on IN queries (web2py belongs queries) that they have 
no more than 30 items in the list.  "because i said so" says google.



On Thursday, August 9, 2012 1:57:13 PM UTC-7, spiffytech wrote:
>
> I've narrowed the problem down further- the exception is caused by a 
> common_filter attached to my posts table:
>
> common_filter = lambda query: db.posts.post_date <= request.now
>
> I'm not sure why that would trigger the orderby error, though. 
>
> Also, is there some significance to limiting the belongs lists to 30 items?
>
>
>
> On Thursday, August 9, 2012 4:24:13 PM UTC-4, howesc wrote:
>>
>> the query and the error message do not match.  your query has no orderby, 
>> yet the error message suggests there is an orderby property set.  this 
>> confuses me.
>>
>> i do:
>>
>> db(db.table.id.belongs([list of items not more than 30 long])).select()
>>
>> all the time on GAE and it works for me (latest stable web2py, and the 
>> last time i checked trunk though that was a few weeks ago)
>>
>> note that cache does nothing on selects on GAE due to the inability to 
>> serialize Rows objects to memcache (at least i think that is the limitation)
>>
>> cfh
>>
>> On Thursday, August 9, 2012 10:40:33 AM UTC-7, spiffytech wrote:
>>>
>>> I'm trying to use the DAL belongs clause on App Engine and am getting an 
>>> error. 
>>>
>>> posts = db(db.posts.id.belongs(post_ids)).select(db.posts.ALL, cache=(
>>> cache.ram, 60))
>>>
>>> Produces:
>>>
>>> BadArgumentError: First ordering property must be the same as inequality 
>>> filter property, if specified for this query; received __key__, expected 
>>> post_date
>>>
>>> Some Googling suggests this can be due to not providing a sort key. I 
>>> tried orderby=db.posts.post_date with no success. What could be going 
>>> wrong?
>>>
>>> I'm using the latest trunk web2py, but tested all the way back to 1.99.3.
>>>
>>

-- 



Reply via email to