Hello,

Let me expose my problem. I have a test (experience test that I made in lab)
that I have to redo many time. At time point 1 there is only one result, but
at the other time point the is one more result to store each time. So at
time point 2 there is two results, at time point 3 there is 3 results and so
on.

Since the number of time point is not fixed I can create a given number of
columns to handle this probleme in a not normalized way. Say fill with null
the empty columns when the results are not available for a particular record
(or a given time point).

To normalize the schema I can do :


db.define_table('result',
    Field('length','integer'),
    Field('width','integer'),
    Field('result','integer'))

db.define_table('test1',
    Field('results','list:integer result')
    Field('whomadethetest','string'),
    Field('date','date'))

db.test1.results.requires = IS_IN_DB(db,'result.id',db.
result._format,multiple=True)


I could add my result one by one in the result table and then pick them
up...

But I would do something sexier then that.

I would like to be able to add any number of record by adding the row of
result table in the same form of test1 table.

So my model should be :

db.define_table('test1',
    Field('results','??????')
    Field('whomadethetest','string'),
    Field('date','date'))

db.define_table('result',
    Field('length','integer'),
    Field('width','integer'),
    Field('result','integer'),
    Field('test1_id','db.test1')

I have now a 1:n relation that is stored in result table.

I would build a widget that let insert all the fields of an other table row
by row. So if I have one result generated at time point 1 there will be one
row in my form. But if I am a later time point there will have 2 rows for
time point 2 and 3 for time point 3, etc.

It could has a button to add more empty row that could be filled out.

I read an search a lot. I found web2py_component that could be of some
utility, but I am not sure since it seams to work with form in a global
manner and not support field. SQLFORM.factory look the way to go before
build the whole thing from scratch with form...

If any of you have a android phone, I would make a form that looks and works
like the contact app. You can add any number of phone number for the same
contact by pressing + button to add an other empty box (field).

Do I must made a custom widget (widget seams to be reserved to a single form
processing), build custom form with helpers, or could SQLFORM.factory is
enough???

Thanks

Richard

Reply via email to