Field('Account', 'reference CoA',
            requires=IS_IN_DB(db, 'CoA.id', '%(Name)s', orderby=db.CoA.Name)),


To me, it looks like you are using "name" to reference the COA, instead of
the ID.

http://www.web2py.com/books/default/search/29?search=IS_IN_DB

*Ben Duncan*
DBA / Chief Software Architect
Mississippi State Supreme Court
Electronic Filing Division


On Thu, Jun 6, 2019 at 10:25 AM David Manns <dgma...@gmail.com> wrote:

> running Python 2.7, web2py 2.18.5
>
> table:
>
> db.define_table('AccTrans',
>     Field('Timestamp', 'datetime', default=request.now, writable=False),
>     Field('Bank', 'reference Bank_Accounts', writable=False),    #e.g.
> PayPal, Cambridge Trust, ...
>     Field('Account', 'reference CoA',
>             requires=IS_IN_DB(db, 'CoA.id', '%(Name)s', orderby=
> db.CoA.Name)),
>     Field('Event', 'reference Events',
>                 requires=IS_EMPTY_OR(IS_IN_DB(db, 'Events.id',
> '%(Event)s', orderby=~db.Events.Date)),
>                 comment='leave blank if not applicable'),
>     Field('Amount', 'decimal(8,2)',
>                 comment='enter full amount of check (negative) or deposit
> (positive); split using Edit if multiple accounts',
>                 requires=IS_DECIMAL_IN_RANGE(-10000, 10000)),    # >=0 for
> asset/revenue, <0 for liability/expense
>     Field('Fee', 'decimal(6,2)',
> requires=IS_EMPTY_OR(IS_DECIMAL_IN_RANGE(-1000,100))),    # e.g. PayPal
> transaction fee, <0 (unless refunded)
>     Field('CheckNumber', 'integer', default=None,
> requires=IS_EMPTY_OR(IS_INT_IN_RANGE(1,99999)),
>                 comment='enter check number if recording a check written'),
>     Field('Accrual', 'boolean', default=True, readable=True,
> writable=False),
>     Field('FullAmt', 'decimal(8,2)', writable=False, readable=False),    #
> for an accrual, the original unsplit amount
>     Field('Reference', 'string', writable=False),
>     Field('Notes', 'text'),
>     singular='Transaction', plural='Check_Register')
>
> first referenced table:
>
> db.define_table('CoA',
>     Field('Name', 'string'),
>     Field('Notes', 'string'),
>     singular='Bank', plural='Banks', format='%(Name)s')
> db.CoA.Name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, 'CoA.Name')]
>
> appadmin displays table rows just fine.
>
> clicking a record link in the id column to edit the record fails:
>
> Ticket ID
>
> 127.0.0.1.2019-06-06.11-23-25.64b3e296-56e8-4c9f-a875-5a0ae496f620
> <type 'exceptions.KeyError'> 'Account.Name' Version
> web2py™ Version 2.18.5-stable+timestamp.2019.04.08.04.22.03
> Python Python 2.7.14: C:\Python27\python.exe (prefix: C:\Python27)
> Traceback
>
> 1.
> 2.
> 3.
> 4.
> 5.
> 6.
> 7.
> 8.
> 9.
> 10.
> 11.
> 12.
> 13.
> 14.
> 15.
> 16.
> 17.
> 18.
> 19.
> 20.
> 21.
> 22.
>
> Traceback (most recent call last):
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\restricted.py", line 219, in restricted
>     exec(ccode, environment)
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\applications\init\controllers/appadmin.py", line 695, 
> in <module>
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\globals.py", line 421, in <lambda>
>     self._caller = lambda f: f()
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\applications\init\controllers/appadmin.py", line 337, 
> in update
>     f='download', args=request.args[:1]))
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\sqlhtml.py", line 1550, in __init__
>     inp = self.widgets.options.widget(field, default)
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\sqlhtml.py", line 353, in widget
>     options = requires[0].options()
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py", line 2742, in 
> _options
>     options = self.other.options(*args, **kwargs)
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py", line 609, in 
> options
>     self.build_set()
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py", line 604, in 
> build_set
>     self.labels = [self.label % r for r in records]
>   File "C:\Users\David\Google Drive\My 
> Documents\OxCamNE.3.1\gluon\packages\dal\pydal\objects.py", line 103, in 
> __getitem__
>     raise KeyError(key)
> KeyError: 'Account.Name'
>
> Error snapshot [image: help]
> <http://127.0.0.1:8000/admin/default/ticket/init/127.0.0.1.2019-06-06.11-23-25.64b3e296-56e8-4c9f-a875-5a0ae496f620#>
>
> <type 'exceptions.KeyError'>('Account.Name')
>
> inspect attributes
> Frames
>
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\restricted.py in restricted at line 219*
>    code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\applications\init\controllers\appadmin.py in <module>
>    at line 695* code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\globals.py in <lambda> at line 421* code
>    arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\applications\init\controllers\appadmin.py in update
>    at line 337* code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\sqlhtml.py in __init__ at line 1550* code
>    arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\sqlhtml.py in widget at line 353* code
>    arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py in _options at
>    line 2742* code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py in options at
>    line 609* code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\packages\dal\pydal\validators.py in build_set
>    at line 604* code arguments variables
>    -
>
>    *File C:\Users\David\Google Drive\My
>    Documents\OxCamNE.3.1\gluon\packages\dal\pydal\objects.py in __getitem__ at
>    line 103* code arguments variables
>    Function argument list
>
>    (self=<Row {'Accrued': -946.32, 'id': 1L}>, k='Account.Name')
>    Code listing
>
>    98.
>    99.
>    100.
>    101.
>    102.
>    103.
>    104.
>    105.
>    106.
>    107.
>
>            lg = BasicStorage.get(self, '__get_lazy_reference__', None)
>            if callable(lg):
>                v = self[key] = lg(key)
>                return v
>
>            raise KeyError(key)
>
>        __str__ = __repr__ = lambda self: '<Row %s>' % \
>            self.as_dict(custom_types=[LazySet])
>
>    Variables
>    key 'Account.Name'
>    builtinKeyError <type 'exceptions.KeyError'>
>
> Context
>
> locals request session response
> In file: C:\Users\David\Google Drive\My
> Documents\OxCamNE.3.1\applications\init\controllers/appadmin.py
>
> 1.
>
> <code object <module> at 000000000BC220B0, file "C:\Users\David\Google 
> Drive\My Documents\OxCamNE.3.1\applications\init\controllers/appadmin.py", 
> line 7>
>
> --
> 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.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/web2py/bfd3002d-300b-49a5-9078-e229cafb9e3f%40googlegroups.com
> <https://groups.google.com/d/msgid/web2py/bfd3002d-300b-49a5-9078-e229cafb9e3f%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/CAC10dPZVWL9DqcyZrHYpkaDr6x4-fJ9uKztQwxQgpc4EXFUMgw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to