在我的web2py应用程序中,在控制器中,我从外部数据库中读取了我想要注册的学生的姓名。我遍历结果列表,将列表元素添加到新列表中。
for student in pupils_query:
attendance_list.insert(counter, [student[0], student[1], student[2], student[3]])
counter += 1
counter = 0
然后,对于每个学生,我从另一张桌子上读到他们当天的出勤代码,并将他们附加到出勤列表中:
for attendance_code in attendance_result:
attendance_list[counter].append(attendance_code)
现在,我想要制作一张表格,使用一个表格,在一个文本输入中显示每个学生的出勤代码(如果错误就可以更新),然后输入一个下拉列表当前课程代码。
我正在使用FORM和TABLE帮助器以表格形式创建表:
form=FORM(TABLE(*[TR(*rows) for rows in attendance_list]))
但似乎无法添加新的'row'表单项,例如:
select = "SELECT("+ main_reg_list +")"
attendance_list[counter].append(select)
其中main_reg_list是可接受的出勤代码字典(当然还有任何其他表格输入元素)。
总之,我不得不在列表列表中使用TABLE助手创建新的TD。我敢打赌,我不是第一个克服这个问题的人。
答案 0 :(得分:1)
我仍然不清楚你想要什么。我想你想要学生信息表,在一栏中你想要下拉。类似于跟随图像的东西
以上表格是根据以下代码创建的。 我希望以下代码可以帮助您:
# controller/default.py
def index():
# Dummy attendance list, list after appending attendance code
attendance_list = [['stud_id_1', 'first_name_1', 'last_name_1', 'attendance_code_1'],
['stud_id_2', 'first_name_2', 'last_name_2', 'attendance_code_2'],
['stud_id_3', 'first_name_3', 'last_name_3', 'attendance_code_5'],
['stud_id_4', 'first_name_4', 'last_name_4', 'attendance_code_4']]
possible_att_code = ['attendance_code_1', 'attendance_code_2', 'attendance_code_3', 'attendance_code_4', 'attendance_code_5']
# initialise form_rows with Table heading
form_rows = [THEAD(TR(TH('ID'), TH('First Name'), TH('Last Name'), TH('Attendence Code')))]
for attendance in attendance_list:
attendance_code_dropdown = _get_dropdown(attendance[0], attendance[3], possible_att_code)
td_list = [TD(attendance[0]), TD(attendance[1]), TD(attendance[2]),
TD(attendance_code_dropdown)]
table_row = TR(td_list, _id='row_' + attendance[0])
form_rows.append(table_row)
# Form submit button
form_rows.append(TR(INPUT(_type='submit')))
form = FORM(TABLE(*form_rows), _name='student_attendance',
_id='student_attendance')
if form.accepts(request, session):
# Write code to update record
pass
return dict(form=form)
def _get_dropdown(stud_id, att_code, possible_att_code):
option_list = []
for pac in possible_att_code:
if pac == att_code:
option_list.append(OPTION(pac, _value=pac, _selected='selected'))
else:
option_list.append(OPTION(pac, _value=pac))
return SELECT(*option_list, _name=stud_id)
<!-- views/default/index.html -->
{{extend 'layout.html'}}
{{=form}}
我的假设是否正确?或者你想要别的什么?评论是否不理解代码。