Django视图中如何填充已有Formset?解决initial参数报错问题
Django Formset 初始化填充正确方法
你出错的核心原因:formset_factory() 函数本身不接受 initial 参数,这个参数是传给工厂生成的Formset类实例化时用的,不是直接传给工厂函数。
修正后的正确代码写法如下:
# 第一步:先通过formset_factory创建Formset类,仅传入表单类、extra、max_num这类参数 MyFormSet = formset_factory(myform, extra=rowCount, max_num=10) # 准备初始化数据(你的这段数据生成逻辑没问题) initial_data = [] for i in range(rowCount): xy = getRandomXY(3) initial_data.append({ 'box0': xy[0], 'box1': xy[1], 'box2': xy[2] }) # 第二步:实例化Formset类时传入initial参数 formSet = MyFormSet(initial=initial_data)
额外补充两个实用细节:
- 如果
initial列表的长度小于你设置的extra值,剩余的表单会以空表单的形式渲染 - 如果
initial列表的长度超过了max_num的值,Formset只会保留前max_num条初始化数据
内容的提问来源于stack exchange,提问作者itchibahn
相关产品推荐
相关产品推荐

