This should do it.

form = SQLFORM.factory( Field('test',default='abc'),
Field('best',default='123'), readonly=True )
On Nov 3, 2:17 am, pepper_bg <ilief...@gmail.com> wrote:
> I have some functionality which generates a custom SQLFORM.factory
> form (reads/writes to different tables, handles uploads, etc.). All
> works fine but somewhere down the flow I just wanted to display that
> same form prefilled and readonly. For whatever reason I can't prefill
> it and make it readonly at the same time.
>
> Let me illustrate with some code (not my exact code, just generic
> web2py code which does the same):
>
> I though to display a generic, readonly, prefilled form I should do
> this:
> def frm():
>     form = SQLFORM.factory( Field('test'), Field('best'),
> readonly=True )
>     form.vars = dict( test='abc', best='123' )
>     return dict(form=form)
>
> the form shows but instead of the default values it shows None.
>
> To show the default values I had to do this (remove readonly and add
> form.accepts (which for a readony form seems strange, I would never
> read from this form here)):
> def frm():
>     form = SQLFORM.factory( Field('test'), Field('best') )
>     form.vars = dict( test='abc', best='123' )
>     form.accepts(request.vars, session)
>     return dict(form=form)
>
> so far so good by form ain't readonly.
>
> When I try to add the readonly back I get a readonly form but again
> with all values set to None:
> def frm():
>     form = SQLFORM.factory( Field('test'), Field('best'),
> readonly=True )
>     form.vars = dict( test='abc', best='123' )
>     form.accepts(request.vars, session)
>     return dict(form=form)
>
> I must be missing something fundamental here. I could display that
> same information other ways I guess but I already have the code which
> builds it in a form I thought I could reuse. Thanks for looking into
> this...

Reply via email to