I get the same error with the correct field name.

On Dec 27, 11:15 am, Anthony <abasta...@gmail.com> wrote:
> I think you want format='%(dog_name)s' -- there is no 'name' field in the
> 'dog' table.
>
> Anthony
>
>
>
>
>
>
>
> On Tuesday, December 27, 2011 11:11:18 AM UTC-5, Cliff wrote:
>
> > This is kind of a show stopper.  Smartgrid appears to stumble over
> > table format definitions.
>
> > Note the commented out format line in this model.
> > db.define_table('dog',
> >                 Field('dog_name', length=32),
> > ##                format='%(name)s',
> >                )
> > db.define_table('owner',
> >                 Field('name', length=32),
> >                 Field('phone', length=32),
> >                )
> > db.define_table('dog_owner',
> >                 Field('dog_id', db.dog),
> >                 Field('owner_id', db.owner)
> >                )
>
> > Uncomment the line and smartgrid 1.99.4 raises this exception when
> > trying to
> > add a record to the dog_owner table:
> > <type 'exceptions.TypeError'> string indices must be integers, not str
>
> > Here is the traceback:
> > Traceback (most recent call last):
> >   File "/home/cjk/w-99-4/web2py/gluon/restricted.py", line 204, in
> > restricted
> >     exec ccode in environment
> >   File "/home/cjk/w-99-4/web2py/applications/doggies/controllers/
> > dog.py", line 5, in <module>
> >   File "/home/cjk/w-99-4/web2py/gluon/globals.py", line 172, in
> > <lambda>
> >     self._caller = lambda f: f()
> >   File "/home/cjk/w-99-4/web2py/applications/doggies/controllers/
> > dog.py", line 2, in index
> >     form = SQLFORM.smartgrid(db.dog)
> >   File "/home/cjk/w-99-4/web2py/gluon/sqlhtml.py", line 1991, in
> > smartgrid
> >     user_signature=user_signature,**kwargs)
> >   File "/home/cjk/w-99-4/web2py/gluon/sqlhtml.py", line 1581, in grid
> >     _class='web2py_form').process(
> >   File "/home/cjk/w-99-4/web2py/gluon/sqlhtml.py", line 862, in
> > __init__
> >     inp = self.widgets.options.widget(field, default)
> >   File "/home/cjk/w-99-4/web2py/gluon/sqlhtml.py", line 220, in widget
> >     return SELECT(*opts, **attr)
> >   File "/home/cjk/w-99-4/web2py/gluon/html.py", line 587, in __init__
> >     self._postprocessing()
> >   File "/home/cjk/w-99-4/web2py/gluon/html.py", line 1704, in
> > _postprocessing
> >     if value and str(c['_value'])==str(value):
> > TypeError: string indices must be integers, not str
>
> > Here is the controller:
> > def index():
> >     form = SQLFORM.smartgrid(
> >         db.owner,
> >         ui = 'jquery-ui',
> >         onvalidation = crud.archive,
> >     )
> >     return dict(form=form)
>
> > To duplicate the problem:
> > Add one owner and one dog.
> > In your browser, open localhost:8000/dogapp/owner/index
> > Edit the owner.
> > Click the Dog Owner link
> > Note the empty grid with add button.
> > Click Add
> > Observe web2py error message
>
> > Similar exceptions occur if you use IS_IN_DB to define a format
> > string.

Reply via email to