Here is my table definition:
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')
The referenced table CoA looks like:
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')]
Database administration displays the table rows just fine.
Clicking on a record's id field should display the record for editing.
Instead I get an error, looks like when its setting up the widget for the
first reference field. In my application, grid and smartgrid have no
problem with my model.
<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-02-31.daf9ebb9-2d29-4fed-a424-bfb9d843a5ef#>
<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': -2427.37, '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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/67f63235-aa68-4882-ae69-8ea7ba811e62%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.