Maybe this will work: http://www.web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#Custom-Field-types--experimental-
On Monday, January 18, 2016 at 11:36:51 AM UTC-5, Mike Constabel wrote: > > Hello, > > I need to map *a new* boolean field in a real postgresql bolean field. > > In an old post from 2012 I found this: > > >> I understand the problem. You can chance the DB type (and you did) but >> web2py still tries to put an 'F' or a 'T' in there. >> >> I modified trunk so that this can be achieved: >> >> import copy >> db =DAL() >> db._adapter.types = copy.copy(db._adapter.types) >> db._adapter.types['boolean']='TINYINT(1)' >> db._adapter.TRUE = 1 >> db._adapter.FALSE = 0 >> db.define_table('test',Field('b', 'boolean')) >> db.test.insert(b=True) >> db.test.insert(b=False) >> rows = db(db.test).select() >> print db.executesql(db(db.test)._select()) >> >> >> this should work fine. >> > > So I tried (seems to be crude :) : > > db._adapter.types = copy.copy(db._adapter.types) > db._adapter.types['boolean2']='BOOLEAN' > db.define_table('test_xx1',Field('b', 'boolean2')) > db.test_xx1.insert(b="1") > db.test_xx1.insert(b="0") > > > This seems to work, the field b in the database is boolean and contains > TRUE und FALSE values. > > But if I open the table in appadmin i get: > > > Traceback (most recent call last): > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/applications/portal/controllers/appadmin.py", > line 269, in select > *fields, limitby=(start, stop)) > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/objects.py", line > 2025, in select > return adapter.select(self.query,fields,attributes) > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/adapters/base.py", > line 1293, in select > return self._select_aux(sql,fields,attributes) > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/adapters/base.py", > line 1274, in _select_aux > return processor(rows,fields,self._colnames,cacheable=cacheable) > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/adapters/base.py", > line 1764, in parse > for row in rows] > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/adapters/base.py", > line 1674, in _parse > value = self.parse_value(value, ft, blob_decode) > File "/vhost1/kd3143/domains/ > umweltanalyse-portal.de/docs/gluon/packages/dal/pydal/adapters/base.py", > line 1524, in parse_value > return self.parsemap[key](value,field_type) > KeyError: 'boolean2' > > > What is the correct code to archieve this? > > > I need the regular web2py boolean field plus a new field type in web2py > with another name for real boolean. Is this possible? > > > I use web2py 2.13.4 and PostgreSQL 9.4.5. > > Regards, > Mike > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.