将列添加到表单中的Web2py表

时间:2016-08-21 21:23:26

标签: forms web2py

在我的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。我敢打赌,我不是第一个克服这个问题的人。

1 个答案:

答案 0 :(得分:1)

我仍然不清楚你想要什么。我想你想要学生信息表,在一栏中你想要下拉。类似于跟随图像的东西

enter image description here

以上表格是根据以下代码创建的。 我希望以下代码可以帮助您:

# 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}}

我的假设是否正确?或者你想要别的什么?评论是否不理解代码。