db.define_table('surveys', Field('title', 'string'), Field('description', 'string'), Field('author', default = get_email()))
db.surveys.id.readable = False db.surveys.title.requires = IS_NOT_EMPTY() db.surveys.description.requires = IS_NOT_EMPTY() db.surveys.author.label = 'Author' db.surveys.author.writable = False db.surveys.author.distinct = True db.surveys.author.requires = IS_NOT_EMPTY() db.surveys.author.requires = IS_EMAIL() db.define_table('q_type', Field('type', 'string')) db.define_table('questions', Field('question', 'string'), Field('question_type', 'reference q_type', requires=IS_IN_DB(db, db.q_type, '%(type)s')), Field('survey', 'reference surveys'), Field('author', default = get_email())) db.questions.question.requires = IS_NOT_EMPTY() db.questions.author.label = 'Author' db.questions.author.writable = False db.questions.author.distinct = True db.questions.author.requires = IS_NOT_EMPTY() db.questions.author.requires = IS_EMAIL() This is the database I am using and the relevant tables. q_type is a table and surveys is also a table. On Tuesday, December 9, 2014 1:13:06 PM UTC-8, Michael Howard wrote: > > Hi everyone, > I am an undergrad at UCSC taking a web development course taught in > web2py. I am working on a quarter long project that is a very watered down > version of SurveyMonkey where a user can create surveys and have other > people take them. I seem to be having trouble with referencing a table as a > field in another table when I try to create a form when I try to add a > question to my survey. > > Here is the error: > > 1. > 2. > 3. > 4. > 5. > 6. > 7. > 8. > 9. > > Traceback (most recent call last): > File "/Applications/web2py.app/Contents/Resources/gluon/restricted.py", > line 224, in restricted > File > "/Applications/web2py.app/Contents/Resources/applications/QuizChimp/controllers/default.py" > <http://127.0.0.1:8000/admin/default/edit/QuizChimp/controllers/default.py>, > line 131, in <module> > File "/Applications/web2py.app/Contents/Resources/gluon/globals.py", line > 392, in <lambda> > File > "/Applications/web2py.app/Contents/Resources/applications/QuizChimp/controllers/default.py" > <http://127.0.0.1:8000/admin/default/edit/QuizChimp/controllers/default.py>, > line 22, in add_q > File "/Applications/web2py.app/Contents/Resources/gluon/sqlhtml.py", line > 1176, in __init__ > File "/Applications/web2py.app/Contents/Resources/gluon/dal.py", line 9110, > in __getitem__ > AttributeError: 'Table' object has no attribute 'question_type' > > > > > > the function in default.py > def add_q(): > db.questions.survey.default = request.args(0) > db.questions.survey.writable = False > form = SQLFORM(db.questions,db.responses) > survey = request.args(0) > if form.process().accepted: > redirect(URL('default', 'add_ans', [id])) > session.flash = 'Your question has been added.' > return dict(form=form, survey=survey) > > > the tables used in my model file survey.py > > db.define_table('q_type', > Field('type', 'string')) > > db.define_table('questions', > Field('question', 'string'), > Field('question_type', 'reference q_type', > requires=IS_IN_DB(db, db.q_type, '%(type)s')), > Field('survey', 'reference surveys'), > Field('author', default = get_email())) > db.questions.question.requires = IS_NOT_EMPTY() > > db.questions.author.label = 'Author' > db.questions.author.writable = False > db.questions.author.distinct = True > db.questions.author.requires = IS_NOT_EMPTY() > db.questions.author.requires = IS_EMAIL() > > > the add_q.html page (very basic) > {{extend 'layout.html'}} > <h1>Add a question</h1> > {{=BEAUTIFY(response._vars)}} > > I hope someone can help. > > Thanks, > Michael > > > -- 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. For more options, visit https://groups.google.com/d/optout.