Я хочу выбрать только проверенных учеников учителей в форме.Но я не мог найти, как фильтровать.Вы можете помочь?Лучший,
db.define_table(
'student',
Field('first_name', length=50, requires=IS_NOT_EMPTY(), notnull=True, label='Name'),
Field('last_name', length=50, requires=IS_NOT_EMPTY(), notnull=True, label='Last Name'),
Field('is_active', 'boolean', label=T('Active?')),
auth.signature,
format='%(first_name)s %(last_name)s')
db.define_table(
'student_teacher',
Field('teacher', 'reference auth_user',
default=auth.user_id,
represent=lambda x, row: db.auth_user[x].first_name + " " + db.auth_user[x].last_name),
Field('student', 'reference student',
represent=lambda x, row: db.student[x].first_name + " " + db.student[x].last_name
),
auth.signature)
db.define_table(
'session_header',
Field('session_date', type="date", label='Session Date'),
Field('teacher', 'reference auth_user', notnull=True, readonly=True, default=auth.user_id),
Field('student', 'reference student', notnull=True),
auth.signature)
subset = db(db.student_teacher.teacher == request.vars.teacher)
db.student_teacher.student.requires = IS_IN_DB(
db, db.student.id, '%(first_name)s %(last_name)s',
zero=T('Choose one'),
_and=IS_NOT_IN_DB(subset, 'student_teacher.student'))
def create():
form = SQLFORM(session_header)
if form.process().accepted:
response.flash = "Record inserted successfully."
elif form.errors:
response.flash = "Please correct the form errors."
response.view = 'sessions/create.html'
return dict(form=form)
Также я добавил таблицу student_teacher.