I don't understand what you try to do... You mean you have to show all the
fields?

You can just don't tell web2py the field you don't want to show... Just
omit them in your model definition?!

Since you only read or select your are not don't need writable=false...

Maybe you don't use the proper tool... SQLFORM is maybe not what you want
to use, or you should have an other look at the doc and pay attention to
the detail about how to use it to mimic the crud.something behavior. We are
supposed to be able to do the exact samething with SQLFORM that we do with
crud and much more... But you can start with crud. There is also
SQLFORM.factory and you can even build your own form with helpers...

Richard

On Tue, Nov 1, 2011 at 3:33 PM, Omi Chiba <ochib...@gmail.com> wrote:

> Richard,
>
> Thank you for you suggestion !
>
> >Field('legacy_id_field_name','id'),
> I tried this but the same result.
>
> > sequence_name='name_of_sequence_in_legacy_database'
> Not sure about it, especially I dont' use any auto increment...
>
>
Yes you don't need this...


> This problem is critical like I need to suspend my project. Right now
> I only have choice to display all the fields with writable=True, or
> read only.... This is nightmare.
>
>
> On Nov 1, 2:09 pm, Richard Vézina <ml.richard.vez...@gmail.com> wrote:
> > At least if your DB2 is a legacy database you maybe need to define you id
> > field like this :
> >
> > Field('legacy_id_field_name','id'),
> >
> > I think it is a not documented functionality offer to postgres user that
> > can maybe apply to your situation...
> >
> > There is also this :
> >
> > sequence_name='name_of_sequence_in_legacy_database'
> >
> > Also to solve postgres users problem with sequence created by postgres
> that
> > follow a strict pattern... When you create your table with web2py there
> is
> > no problem it handle the name of the sequence...
> >
> > Maybe it could apply and help to solve your problem.
> >
> > Richard
> >
> > On Tue, Nov 1, 2011 at 3:02 PM, Richard Vézina
> > <ml.richard.vez...@gmail.com>wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Hello Omi,
> >
> > > Is this problem have been resolved with the other thread?
> >
> > > Richard
> >
> > > On Tue, Nov 1, 2011 at 12:53 PM, Omi Chiba <ochib...@gmail.com> wrote:
> >
> > >> Tested with MSSQL 2008 and DB2
> >
> > >> If you connect existing table with primarykey and use writable=False
> > >> to any of the field on the form, it will show the following error.
> >
> > >> Traceback (most recent call last):
> > >>  File "C:\web2py\gluon\restricted.py", line 194, in restricted
> > >>    exec ccode in environment
> > >>  File "C:/web2py/applications/otwitter/controllers/default.py", line
> > >> 91, in <module>
> > >>  File "C:\web2py\gluon\globals.py", line 149, in <lambda>
> > >>    self._caller = lambda f: f()
> > >>  File "C:/web2py/applications/otwitter/controllers/default.py", line
> > >> 33, in test
> > >>    if form.process().accepted:
> > >>  File "C:\web2py\gluon\html.py", line 1950, in process
> > >>    self.validate(**kwargs)
> > >>  File "C:\web2py\gluon\html.py", line 1898, in validate
> > >>    if self.accepts(**kwargs):
> > >>  File "C:\web2py\gluon\sqlhtml.py", line 1238, in accepts
> > >>    fields[field.name] = self.record[field.name]
> > >> TypeError: 'NoneType' object is not subscriptable
> >
> > >> This is really critical for my project because I cannot use
> > >> writable=False to the fields I want to protect.
> >
> > >> Table definition
> > >> --------------------------------
> > >> db.define_table('test',
> > >>    Field('mykey'),
> > >>    Field('field1'),
> > >>    Field('field2'),
> > >>    primarykey=['mykey'],
> > >>    migrate=False)
> >
> > >> controller
> > >> ---------------------------------
> > >> def test():
> > >>    db.test.field2.writable=False
> > >>    form = SQLFORM(db.test)
> > >>    if form.process().accepted:
> > >>        response.flash = 'form accepted'
> > >>    elif form.errors:
> > >>        response.flash = 'form has errors'
> > >>    return dict(form=form)
> >
> > >> view
> > >> ----------------------------------
> > >> {{extend 'layout.html'}}
> > >> <h1>test</h1>
> > >> {{=form}}
>

Reply via email to