Assuming SOLIDFORM is an SQLFORM

form1 = SOLIDFORM(db.Sample, q1, fields=fields1, readonly=True)

q1 should be a record id or a Row object. You are passing a Rows object.

On Wednesday, 16 May 2012 21:32:08 UTC-5, Simon Ashley wrote:
>
> Any one with any ideas on this one?
> (been trying to trouble shoot it all morning)
>
> Environment: Version 1.99.4 (2011-12-31 04:51:15)
>
> Getting the following error, and unable to work it out.
> (have other areas using soldiform that are working OK)
>
> Traceback (most recent call last):
>   File "C:\web2py\gluon\restricted.py", line 204, in restricted
>     exec ccode in environment
>   File "C:/web2py/applications/tree/controllers/stree.py" 
> <http://127.0.0.1:8000/admin/default/edit/tree/controllers/stree.py>, line 
> 310, in <module>
>   File "C:\web2py\gluon\globals.py", line 172, in <lambda>
>     self._caller = lambda f: f()
>   File "C:/web2py/applications/tree/controllers/stree.py" 
> <http://127.0.0.1:8000/admin/default/edit/tree/controllers/stree.py>, line 
> 302, in SV2
>     form1 = SOLIDFORM(db.Sample, q1, fields=fields1, readonly=True)
>   File "applications\tree\modules\plugin_solidform.py", line 94, in __init__
>     SQLFORM.__init__(self, *args, **kwds)
>   File "C:\web2py\gluon\sqlhtml.py", line 805, in __init__
>     v = record['id']
>   File "C:\web2py\gluon\dal.py", line 6532, in __getitem__
>     row = self.records[i]
>
> *TypeError: list indices must be integers, not str*
>
>
> *Model*
> db.define_table('Sample',
>     Field('Compartment', db.Compartment),
>     Field('Date', 'date'),
>     Field('Comments'),
>     Field('Pb', 'integer'),
>     Field('Fe', 'integer'),
>     Field('Al', 'integer'),
>     Field('Cu', 'integer'),
>     Field('Cr', 'integer'),
>     Field('Sn', 'integer'),
>     Field('Ni', 'integer'),
>     Field('Si', 'integer'),
>     Field('Na', 'integer'),
>     Field('Mg', 'integer'),
>     Field('Zn', 'integer'),
>     Field('Mo', 'integer'),
>     Field('Ca', 'integer'),
>     Field('P', 'integer'),
>     Field('Bo', 'integer'),
>  
>     format='%(Date)s %(id)s')
>
> *Controller*
> Methods 2 and 3 work, 1 doesn't
> *
> *
> def SV2():
>     session.sample = 1
>     
>     q1 = db(db.Sample.id == session.sample).select()
>     #q2 = db.Sample.id == session.sample
>     #q3 = db.Sample.id == session.sample
>     fields1 = ['Date','Comments','Fe','Cu','Cr']
>     #fields3 = ['Date','Comments','Fe','Cu','Cr']
>     
>     form1 = SOLIDFORM(db.Sample, q1, fields=fields1, readonly=True)
>     #form2 = SQLFORM.grid(q2, searchable=False, 
> create=False,csv=False,editable=False,deletable=False, sortable=False )
>     #form3 = SQLFORM(db.Sample, session.sample, fields=fields3, 
> readonly=True)
>     
>     return dict(form=form1) #does not work
>     #return dict(form=form2) #works
>     #return dict(form=form3) #works
>

Reply via email to