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.

Reply via email to