The recent piece of code doesn't give any error when I load the
default/index page, but there are no input fields on
default/data/create/A and when I click on submit on this page I get an
error. I suppose the problem lies in either the pointer-like call
*fields or in the way I try to redefine "fields" .  Perhaps I should
import the ctype library?

On 7/6/10, Rick Hultgren <sababa.sab...@gmail.com> wrote:
> ooops... this should be the correct code:
>
> letters=['A', 'B', 'C']
> fields=[]
> for letter in letters:
>       db.define_table(letter, *fields)
> fields=[Field(item+'_id', db[item]) for item in letters]
>
> ...sorry for the bad code int the previous message.
>
> On 7/6/10, Rick Hultgren <sababa.sab...@gmail.com> wrote:
>> ...so these tables:
>>
>> db.define_table( 'A',
>>  Field( 'A_id',  db.A),
>>  Field( 'B_id',  db.B),
>>  Field( 'C_id', db.C))
>>
>> db.define_table( 'B',
>>  Field( 'A_id',  db.A),
>>  Field( 'B_id',  db.B),
>>  Field( 'C_id', db.C))
>>
>> db.define_table( 'C',
>>  Field( 'A_id',  db.A),
>>  Field( 'B_id',  db.B),
>>  Field( 'C_id', db.C))
>>
>> ...can be generated with this code:
>>
>> letters=['A', 'B', 'C']
>> fields=[]
>>  for letter in letters:
>>   db.define_table(letter, *fields)
>> fields=[Field(item) for item in letters]
>>
>> Thanks a lot for the help!
>>
>> On 7/4/10, mdipierro <mdipie...@cs.depaul.edu> wrote:
>>> No.
>>>
>>> Given db.define_table('sometable',*fields), you cannot add fields
>>> outside this statement but you can call the statement in a separate
>>> http request and add fields to the *fields list.
>>>
>>> On 4 Lug, 13:45, Rick Hultgren <sababa.sab...@gmail.com> wrote:
>>>> ...with other words -- how to add fields to a table that is already
>>>> declared? Is it possible?
>>>>
>>>> On 7/4/10, Rick Hultgren <sababa.sab...@gmail.com> wrote:
>>>>
>>>> > perhaps the table names will be changed, so please don't bother about
>>>> > "before" and "after"...the point is -- how to refer/link to the table
>>>> > name "locus", when that table is not yet created/declared/made?
>>>>
>>>> > On 7/4/10, Rick Hultgren <sababa.sab...@gmail.com> wrote:
>>>> >> Thanks for the answers. I'm trying to create these tables:
>>>>
>>>> >> db.define_table( 'substance',
>>>> >>  Field( 'substance',  db.substance),
>>>> >>  Field( 'process',  db.process),
>>>> >>  Field( 'condition',  db.condition),
>>>> >>  Field( 'locus',  db.locus),
>>>> >>  Field( 'name'),
>>>> >>  Field( 'main_name'))
>>>>
>>>> >> db.define_table( 'process',
>>>> >>  Field( 'substance',  db.substance),
>>>> >>  Field( 'process',  db.process),
>>>> >>  Field( 'condition',  db.condition),
>>>> >>  Field( 'locus',  db.locus),
>>>> >>  Field( 'name'),
>>>> >>  Field( 'main_name'))
>>>>
>>>> >> db.define_table( 'condition',
>>>> >>  Field( 'substance',  db.substance),
>>>> >>  Field( 'process',  db.process),
>>>> >>  Field( 'condition',  db.condition),
>>>> >>  Field( 'locus',  db.locus),
>>>> >>  Field( 'name'),
>>>> >>  Field( 'main_name'))
>>>>
>>>> >> db.define_table( 'locus',
>>>> >>  Field( 'substance',  db.substance),
>>>> >>  Field( 'process',  db.process),
>>>> >>  Field( 'condition',  db.condition),
>>>> >>  Field( 'locus',  db.locus),
>>>> >>  Field( 'name'),
>>>> >>  Field( 'main_name'))
>>>>
>>>> >> On 7/4/10, mdipierro <mdipie...@cs.depaul.edu> wrote:
>>>> >>> Could you explain to us in English what you are trying to model? I
>>>> >>> am
>>>> >>> sure there is a simpler solution using link tables.
>>>>
>>>> >>> On 3 Lug, 12:14, Rick Hultgren <sababa.sab...@gmail.com> wrote:
>>>> >>>> Thanks for the link. My actual problem is more complicated than
>>>> >>>> the
>>>> >>>> example I gave. I realize that I need to link a field to a table
>>>> >>>> that
>>>> >>>> isn't initiated yet (item2):
>>>>
>>>> >>>>         objects = ['substance', 'process', 'condition', 'locus']
>>>> >>>>         linksubobjects = ['locus', 'before', 'after']
>>>> >>>>         unlinksubobjects = ['name', 'main_name']
>>>> >>>>         for object in objects:
>>>> >>>>                 for item1 in linksubobjects+unlinksubobjects:
>>>> >>>>                         for item2 in objects:
>>>> >>>>                                 fields=[Field(item1, 'reference
>>>> >>>> item2')]
>>>> >>>>                                 db.define_table(object,*fields)
>>>>
>>>> >>>> I suppose the solution would be to initiate the table names and
>>>> >>>> then
>>>> >>>> add the fields either in db.py, or in the controller file. But I
>>>> >>>> have
>>>> >>>> no idea how to do this.
>>>>
>>>> >>>> On 7/3/10, Yarko Tymciurak <resultsinsoftw...@gmail.com> wrote:
>>>>
>>>> >>>> > The online book has a fairly useful search;
>>>>
>>>> >>>> > For your question, see:
>>>> >>>> >http://web2py.com/book/default/section/6/13
>>>>
>>>> >>>> > Regards,
>>>> >>>> > - Yarko
>>>>
>>>> >>>> > On Jul 3, 8:45 am, Rick <sababa.sab...@gmail.com> wrote:
>>>> >>>> >> Hi,
>>>>
>>>> >>>> >> I would like to link a table to its own model like this:
>>>>
>>>> >>>> >>         db.define_table('person',
>>>> >>>> >>                 Field('name'),
>>>> >>>> >>                 Field('child', db.person))
>>>>
>>>> >>>> >> I understand that I should first initiate the table and then
>>>> >>>> >> link
>>>> >>>> >> it
>>>> >>>> >> to itself. But how to do that?
>>>>
>>>> >>>> >> Thanks in advance for help!
>>
>

Reply via email to