Hello All,
I'm trying to make a web2py interface to a legacy db(mysql).
The db is defined like this:
CREATE TABLE `car_models` (
`model_id` int(10) unsigned NOT NULL auto_increment,
`model_name` text NOT NULL,
PRIMARY KEY (`model_id`)
)
CREATE TABLE `cars` (
`car_id` int(10) unsigned NOT NULL auto_increment,
`model_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`car_id`)
)
a model:
db.define_table('car_models',
Field('model_id','integer'),
Field('model_name','string'),
primarykey=['model_id'],
migrate=False
)
db.define_table('cars',
Field('car_id','integer'),
Field('model_id','integer'),
Field('note','text'),
primarykey=['car_id'],
migrate=False
)
works fine in appadmin. Shows tables, inserts/edits rows.
But if I'm trying to define a reference
db.define_table('cars',
Field('car_id','integer'),
Field('model_id', db.car_models.model_id),
Field('note','text'),
primarykey=['car_id'],
migrate=False
)
I get this error:
Error traceback
Traceback (most recent call last):
File "/home/ivm/prg/web2py/gluon/restricted.py", line 186, in
restricted
exec ccode in environment
File "/home/ivm/prg/web2py/applications/monicar_db_test/controllers/
appadmin.py", line 410, in ?
File "/home/ivm/prg/web2py/gluon/globals.py", line 96, in <lambda>
self._caller = lambda f: f()
File "/home/ivm/prg/web2py/applications/monicar_db_test/controllers/
appadmin.py", line 124, in insert
form = SQLFORM(db[table], ignore_rw=ignore_rw)
File "/home/ivm/prg/web2py/gluon/sqlhtml.py", line 668, in __init__
if field.type == 'id':
File "/home/ivm/prg/web2py/gluon/sql.py", line 2551, in __eq__
return Query(self, '=', value)
File "/home/ivm/prg/web2py/gluon/sql.py", line 2993, in __init__
right = sql_represent(right, left.type, left._db._dbname,
left._db._db_codec)
File "/home/ivm/prg/web2py/gluon/sql.py", line 555, in sql_represent
return str(int(obj))
ValueError: invalid literal for int(): id
Looks like DAL wants me to refere to a field of type 'id'
but if I change 'model_id' field type to id
db.define_table('car_models',
Field('model_id','id'),
Field('model_name','string'),
primarykey=['model_id'],
migrate=False
)
appadmin shows 'car_models' but doesn't let me edit rows
and shows empty 'cars' table(its not empty )
web2py 1.83.2
python2.4