如何使用动态数量的数据条目初始化表单集

Posted

技术标签:

【中文标题】如何使用动态数量的数据条目初始化表单集【英文标题】:how to initialize a formset with dynamic number of data entries 【发布时间】:2012-07-03 12:48:22 【问题描述】:

只有当我在运行我的代码之前知道数组中的元素数(此代码为 12)时,我才能用数组的元素填充我的表单集,该数组是 actuals_data,但是当我在运行我的代码之前不知道数组中元素的数量时,如何从数组中填充表单集,它来自变量 count

我的看法是

def show_actuals(request):

Account_Number_in = request.session['account_number']
Year_in = request.session['year']
count = request.session['count']
actuals_data = request.session['actuals_to_show']
months = request.session['months']
show_actuals_formset = formset_factory(FetchActualsBox, extra=0)

formset = show_actuals_formset(initial=['Value': actuals_data[0],
                    'Value': actuals_data[1],
                    'Value': actuals_data[2],
                    'Value': actuals_data[3],
                    'Value': actuals_data[4],
                    'Value': actuals_data[5],
                    'Value': actuals_data[6],
                    'Value': actuals_data[7],
                    'Value': actuals_data[8],
                    'Value': actuals_data[9],
                    'Value': actuals_data[10],
                    'Value': actuals_data[11],
                    ])



return render_to_response('ShowActualsData.html', 'formset' : formset , 'count' : count, 'actuals_data' : actuals_data , 'months' : months , 'Account_Number' : Account_Number_in , 'Year' : Year_in )

【问题讨论】:

【参考方案1】:

您可以使用给定数量的项目迭代和创建列表。

示例代码:

def show_actuals(request):

    Account_Number_in = request.session['account_number']
    Year_in = request.session['year']
    count = request.session['count']
    actuals_data = request.session['actuals_to_show']
    months = request.session['months']
    show_actuals_formset = formset_factory(FetchActualsBox, extra=0)
    initial_list = []
    for data in actuals_data:
       initial_list.append('value': data)
    formset = show_actuals_formset(initial=initial_list)

【讨论】:

请不要告诉人们使用计数器来遍历列表。您应该遍历列表本身:for i in actual_data...,实际上这可以在列表理解中完成。

以上是关于如何使用动态数量的数据条目初始化表单集的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 django 中的单个表单中使用多个表单集,如果可以的话如何?

Django Pagination,用户选择的条目数量错误

读取动态表单的元素

Django FormWizard - 如何根据上一步动态创建表单集

图例条目的数量等于数据集的大小

使用 VBA 在 Access 2010 中的表单上显示记录集