Hello,

Sorry if this question is a repeat, but I'm new here and couldn't find
anything on point in the archive.

I'm trying to create a form for data insertion, which will include a
dropbox representing a foreign key. Trouble is, the foreign table has
another key representing the row's 'school', which corresponds to the
'school' of the logged-in user. I only want the dropbox to represent
rows whose school entry matches that of the user.

Is there any way to accomplish this with a SQLFORM? I could use a
FORM, a SQLFORM in HTML, or I could modify the SQLFORM class, but I'd
like to keep my code as simple and reusable as possible.

Here's the relevant code:

>From db.py:

db.define_table('school',SQLField('name','string'),
                         SQLField('schoolnumber','integer')
               )
db.define_table('student',SQLField('school',db.school),
                          SQLField('home_room','string'),
                          SQLField('lastfirst','string',length=35),
                          SQLField('student_number','integer'),
                          SQLField
('enroll_status','integer',default=0)
               )
db.define_table('incident',SQLField('student',db.student),
                           SQLField('starttime','datetime'),
                           SQLField('endtime','datetime'),
                           SQLField('rpttime','datetime'),
                           SQLField('activity','string'),
                           SQLField('location','string')
               )
db.define_table('staff',SQLField('school',db.school),
                        SQLField('emp_number','integer'),
                        SQLField('last_name','string'),
                        SQLField('first_name','string'),
                        SQLField('jobtitle','string')
               )
db.student.school.requires=IS_IN_DB(db,'school.id','school.name')
db.incident.student.requires=IS_IN_DB
(db,'student.id','student.lastfirst')
db.staff.school.requires=IS_IN_DB(db,'school.id','school.name')

>From the controller:

def incident():
    uid = userid()
    s = session.school
    staffname=db(db.staff.id==uid).select
(db.staff.first_name,db.staff.last_name)
    incidentform=SQLFORM(db.incident)  #I want the student dropbox
populated only with values in
                                                           #db
(db.student.school==s).select(db.student.id,db.student.lastfirst)
    return dict(staffname=staffname[0].first_name.capitalize
(),incidentform=incidentform)

>From the view:

{{extend 'layout.html'}}
<h1>This is the incident.html template</h1>
<h2>Hello, {{=staffname}}!</h2>
{{=incidentform}}



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to