Problem: I don't see how to specify multiple tables with table
references to each other. I can't simply define the relationship,
because the DAL hasn't created a table yet to reference. But I can't
create the table(s) because they reference tables that also don't
exist yet. Catch 22. Besides manually creating the tables (which I
believe prevents me from using the wonderful DAL), what do I do?
Example:
db.define_table('image',
Field('image', 'upload'),
Field('date', 'datetime'),
Field('title', 'string'),
Field('description', 'string'),
Field('postid', 'reference post'),
Field('owner', 'reference person'),
Field('views', 'integer'),
Field('published', 'boolean'))
db.define_table('post',
Field('title', 'string'),
Field('data', 'text'),
Field('date', 'datetime'),
Field('owner', 'reference person'),
Field('views', 'integer'),
Field('published', 'boolean'))
db.define_table('file',
Field('file', 'upload'),
Field('date', 'datetime'),
Field('owner', 'reference person'),
Field('views', 'integer'),
Field('published', 'boolean'))
db.define_table('comment',
Field('name', 'string'),
Field('person', 'reference person'),
Field('date', 'datetime'),
Field('data', 'text'),
Field('postid', 'reference post'),
Field('fileid', 'reference file'),
Field('imageid', 'reference image'),
Field('published', 'boolean'))
db.define_table('person',
Field('username', 'string'),
Field('password', 'password'),
Field('description', 'text'),
Field('email', 'string'),
Field('creation_date', 'datetime'),
Field('last_login', 'datetime'),
Field('image', 'reference image'))
This fails because the first table defined references tables are are
defined afterwards. (which in turn reference other tables that aren't
defined yet)