Thanks, Richard.  Yes, I did make sure the custom auth_user was
correct before I added the reference fields that caused the error.
And I do have the student and contact tables defined.  They were
defined in the db_wizard.py file but I put all the model defs in the
same db.py file, but still get the same error.  I also tried changing
the order of the table definitions, with student and contact coming
before and after auth_user.  I'm going to try a few more things and
then I'll post the full model definition.

Oh, and I'm using MySQL.  I was trying PostgreSQL but being a long
time MySQL user the change in syntax was too jarring in combination
with all the other changes I've made recently (ie, PHP to python,
CakePHP to web2py, etc.), so I switched back to MySQL for the time
being.

Thanks again for all your input.

Eric

On Aug 8, 4:46 pm, Richard Vézina <ml.richard.vez...@gmail.com> wrote:
> Without the whole model it is difficult to clearly understand what you are
> trying to acheive...
>
> You add those line to auth_user that you have customized??
>
> Field('student', db.student), # = one to many
> Field('contact', db.contact), # idem
>
> It could depend of your backend database if it support FK...
>
> If you had customized the auth_user table... Before add you FK field (the
> ones above), try to make sure your custom auth_user is correct then add your
> custom field one after one...
>
> Richard
>
>
>
>
>
>
>
> On Mon, Aug 8, 2011 at 4:33 PM, Eric Scott <erictransla...@gmail.com> wrote:
> > Thanks for your response, Richard and Jim.  Richard, the traceback is
> > in my original message, as is the problematic part of the model code.
> > The error occurs with any view/controller -- I can't access the app at
> > all.  The problem is definitely in the model and not the controller.
> > The problem occurs when I insert any code into a model with the
> > following syntax:
>
> > field('fieldname", db.referenced_table)
>
> > The error is revealed at the end of the traceback included in my
> > original message:
>
> > KeyError: 'student'
>
> > One thing that confused me when reading the web2py book was the
> > relatively brief time spend discussing foreign key relationships.
> > Every other framework I've used (CakePHP and symfony) has spent at
> > least a full chapter describing how to set up these relationships in
> > the models.  This makes me feel like I'm missing something really
> > obvious.  web2py has surprised me by letting me finish tasks that were
> > very time consuming in other frameworks in a few lines of code, so I'm
> > wondering if there's a really simple way to describe one-to-many and
> > many-to-many relationships in web2py that I'm missing in the
> > documentation.
>
> > This is the syntax used for referencing many-to-one relationships in
> > Chapter 7 of the latest web2py book, so I'm not entirely sure what I'm
> > doing wrong.
>
> > Jim, there is a many-to-one relationship between both students:users
> > and contacts:users.  I'm not sure if that's what you're asking.  I've
> > not seen the code you use anywhere in the web2py book (at least not
> > that I recall), so I will give it a try to see if it works.
>
> > Thanks again,
>
> > Eric
>
> > On Aug 8, 3:58 pm, Richard Vézina <ml.richard.vez...@gmail.com> wrote:
> > > If you send you controller and model code at least with trace back it
> > could
> > > help to troobleshoot...
>
> > > Richard
>
> > > On Mon, Aug 8, 2011 at 3:51 PM, Eric Scott <erictransla...@gmail.com>
> > 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

Reply via email to