tablename is a variable, but you are using it in a string literal (i.e.,
'[tablename].name') and expecting Python to still somehow figure out you
are referring to a variable. You should instead use db[tablename].name
there.
Anthony
On Tuesday, March 29, 2016 at 5:28:11 PM UTC-4, Norm Rajala wrote:
>
> Just started with web2py... great framework.
>
> I tried and failed however to find an answer to why two validators seem to
> validate differently in terms of checking the syntax of parameters.
>
> I do the following:
>
> tableNames = ['taxaTS', 'taxaPF']
>
> for tableName in tableNames:
> # Create the taxa table
> db.define_table(tableName,
> Field('name' , unique=True, length=512,
> comment='*Required'),
> Field('root_Path','list:string', default=['root'],
> length=5200, compute=computers.calcRootPath()),
> Field('is_Leaf','boolean',default=False),
> Field('parent',length=512,default='root',
> comment='*Required'),
> Field('note','text'),
> Field('link_Paths','list:string',default=[]),
> auth.signature)
>
> ## Field and Table Form Rules
> # name
> db[tableName].name.requires = IS_NOT_EMPTY()
> line 40 db[tableName].name.requires = IS_NOT_IN_DB(db, '[tableName].name')
> # Name is unique
>
> # parent
> db[tableName].parent.requires = IS_NOT_EMPTY()
> line 44 db[tableName].parent.requires = IS_IN_DB(db, '[tableName].name')
> # Parent name must exist in table already
>
>
>
>
> When the above code executes, I get the following error:
>
> <type 'exceptions.AttributeError'> 'DAL' object has no attribute
> '[tableName]'Version
> web2py™ Version 2.14.3-stable+timestamp.2016.03.26.23.02.02
> Python Python 2.7.3: C:\Python27\python.exe (prefix: C:\Python27)Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
>
> Traceback (most recent call last):
> File "C:\Users\User\PycharmProjects\bladeCloud\web2py\gluon\restricted.py",
> line 227, in restricted
> exec ccode in environment
> File
> "C:/Users/User/PycharmProjects/bladeCloud/web2py/applications/bc/models/db_bc_kb.py"
> <http://127.0.0.1:8000/admin/default/edit/bc/models/db_bc_kb.py>, line 44,
> in <module>
> db[tableName].parent.requires = IS_IN_DB(db, '[tableName].name') #
> Parent name must exist in table already
> File "C:\Users\User\PycharmProjects\bladeCloud\web2py\gluon\validators.py",
> line 529, in __init__
> field = self.dbset.db[items[0]][items[1]]
> File
> "C:\Users\User\PycharmProjects\bladeCloud\web2py\gluon\packages\dal\pydal\base.py",
> line 914, in __getitem__
> return self.__getattr__(str(key))
> File
> "C:\Users\User\PycharmProjects\bladeCloud\web2py\gluon\packages\dal\pydal\base.py",
> line 921, in __getattr__
> return BasicStorage.__getattribute__(self, key)
> AttributeError: 'DAL' object has no attribute '[tableName]'
>
>
> It doesn't like line 44 but is ok with line 40.
>
> Can someone help?
> Thanks...Norm (really new at this)
>
--
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.