The problem is in line 61 of your db.py.
When you make "Field('student', db.student", you are telling the DAL
to go look for a table named "student." If you have no such table, it
will raise an exception.
If you're going to do a self join, the right syntax would be
"Field('student', db.auth_user"
Somewhere Massimo (I think it was him) has written about self joins,
but I don't recall where... Sorry I can't point you to a reference.
On Aug 8, 3:51 pm, Eric Scott <[email protected]> wrote:
> I'm having problems getting tables linked in web2py using reference
> fields. For example, I have a model with table student and table
> contact. Table auth_user contains my app's users. In db.py, under
> db.define_table('auth_user') I have the following code to reference a
> one-to-many relationship between users:students and users:contacts:
>
> Field('student', db.student),
> Field('contact', db.contact),
>
> But I keep getting the following error:
>
> Traceback (most recent call last):
> File "/home/www-data/web2py/gluon/restricted.py", line 192, in
> restricted
> exec ccode in environment
> File "/home/www-data/web2py/applications/teachertext/models/db.py",
> line 61, in <module>
> Field('student', db.student,
> File "/home/www-data/web2py/gluon/dal.py", line 4331, in __getattr__
> return self[key]
> File "/home/www-data/web2py/gluon/dal.py", line 4325, in __getitem__
> return dict.__getitem__(self, str(key))
> KeyError: 'student'
>
> I'm new to web2py (but not to frameworks) and this is my first time
> referencing foreign keys in a web2py app. I'm sure I'm missing
> something obvious but I'd be grateful if someone could point it out
> for me.
>
> Thank you,
>
> Eric