Don't get if it is fixed, anyway I can't reproduce.
BTW: it's always better to post a simple script to reproduce the issue 
(simpler for you to check for copy/paste errors and for who helps)
db.py

db.define_table('genres',
                Field('name')
                )

db.define_table('movies',
            Field('name'),
            Field('genres','string','list:reference genres', requires=
IS_IN_DB(db, 'genres.id', '%(name)s [%(id)s]', multiple=True))
            )




shell
>>> db.genres.insert(name='horror')
1
>>> db.genres.insert(name='comedy')
2
>>> db.movies.insert(name='terminator', genres=[1,2])
1
>>> db.movies.insert(name='alien', genres=[2])
2
>>> db.movies.insert(name='alien2', genres=[2])
3
>>> print db(db.movies.id>0).select()
movies.id,movies.name,movies.genres
1,terminator,|1|2|
2,alien,|2|
3,alien2,|1|

>>> db.movies.insert(name='alien2', genres=[1,6])
4
>>> print db(db.movies.id>0).select()
movies.id,movies.name,movies.genres
1,terminator,|1|2|
2,alien,|2|
3,alien2,|1|
4,alien2,|1|6|

>>> db.movies.validate_and_insert(name='alien2', genres=[1])
<Row {'errors': <Row {}>, 'id': 5}>
>>> db.movies.validate_and_insert(name='alien3', genres=[1])
<Row {'errors': <Row {}>, 'id': 6}>
>>> db.movies.validate_and_insert(name='alien3', genres=[1,2])
<Row {'errors': <Row {}>, 'id': 7}>
>>> print db(db.movies.id>0).select()
movies.id,movies.name,movies.genres
1,terminator,|1|2|
2,alien,|2|
3,alien2,|1|
4,alien2,|1|6|
5,alien2,|1|
6,alien3,|1|
7,alien3,|1|2|

>>> db.movies.validate_and_insert(name='alien3', genres=[1,6])
<Row {'errors': <Row {'genres': 'value not in database'}>, 'id': None}>





All is working ok. 

      

-- 



Reply via email to