...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!