strange. Are you using lazy tables?

On Thursday, 29 November 2012 23:31:17 UTC-6, Andy W wrote:
>
> Thanks for the quick reply howesc.
>
> Just for the record, your suggested:
>
> Field('client_code', 'string', required=True, requires=IS_IN_DB(db, 
> 'client.code', '%(code)s'))
>
> did not work. It needed a minor change to:
>
> Field('client_code', 'string', required=True, requires=IS_IN_DB(db, *
> db.client.code*, '%(code)s'))
>
>
> This works on both sqlite and GAE.
>
> Much appreciate the help - as you can see, I still have a lot to learn!
>
>
> On Thursday, November 29, 2012 10:34:53 PM UTC+4, howesc wrote:
>>
>> in your particular example, i often define a field like:
>>
>>   Field('client_code', 'string', required=True, requires=IS_IN_DB(db, 
>> 'client.code', '%(code)s'))
>>
>> that does the lookup for the dropdown, but stores the string in the new 
>> table.  if you will be doing this lots of times then you should cache the 
>> lookup in memcache.
>>
>> your technique is ready for memcache, but i think has a typo (that i 
>> don't fully understand why it works on sqllite):
>> payment_methods=[p.name for p in db(id>0).select(db.payment_method.name)]
>> db.receipt.paid_by.requires = IS_IN_SET(payment_methods)
>> should be:
>> payment_methods=[p.name for p in db(db.payment_method.id>0).select(
>> db.payment_method.name)]
>> db.receipt.paid_by.requires = IS_IN_SET(payment_methods)
>>
>> cfh
>>
>>
>>
>> On Wednesday, November 28, 2012 11:01:12 PM UTC-8, Andy W wrote:
>>>
>>> Can anybody expand on 13.5 of the Web2py Manual on how best to adapt an 
>>> app to run on GAE? In particular, how to do away with linked tables.
>>>
>>> For example, I have a simple app that generates a cash receipt. The 
>>> input form displays a dropdown list for the user to select a payment method 
>>> (cash, credit card etc). The allowed payment methods are held in a second 
>>> table, so that users can adapt & extend them.
>>>
>>> Using sqlite this is simple to achieve with a linked table. For GAE, I 
>>> am assuming it is better to store the text value ("cash" or "credit card" 
>>> etc) as part of the receipt record, rather than storing the link, but how 
>>> to achieve this?
>>>
>>> I have tried reading the payment options in to a list and using this 
>>> list to define allowable entry values:
>>>
>>> payment_methods=[p.name for p in db(id>0).select(db.payment_method.name
>>>> )]
>>>> db.receipt.paid_by.requires = IS_IN_SET(payment_methods)
>>>
>>>
>>> This works on sqlite, but on GAE gives the error:
>>>
>>>   File "/Users/andy/www/web2py/gluon/dal.py", line 1414, in get_table
>>>>     raise RuntimeError, "No table selected"
>>>> RuntimeError: No table selected
>>>
>>>
>>> Any suggestions?? 
>>>
>>

-- 



Reply via email to