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 [email protected].
For more options, visit https://groups.google.com/d/optout.