从复杂的Django表单获取POST数据?

0 投票
2 回答
1918 浏览
提问于 2025-04-15 12:55

我有一个Django表单,根据年份和月份会使用不同数量的字段。所以我这样创建表单字段:

for entry in entry_list:
    self.fields[entry] = forms.DecimalField([stuffhere])

但是现在我不知道怎么获取提交的表单数据。

通常我会这样做:

form.cleaned_data["fieldname"]

但我不知道字段的名称是什么。调试界面显示我的POST数据只是“Entry Object”,值是“u''”。调用POST.lists()也没有显示任何内容。

我确定我漏掉了一些明显的东西,但我已经卡在这里好几天了。有没有更好的方法?所有数据都在请求对象里,但我就是不知道怎么用它?

这是模型/表单/视图的代码:http://pastebin.com/f28d92c0e

非常感谢!

编辑:

我试过下面的两个建议。使用表单集确实更简单、更好。

2 个回答

0

在这一行代码中:

self.fields[entry] = forms.DecimalField(max_digits=4, decimal_places=1, label=nice_label)

这里的entry是一个模型实例。但字段是通过字段名称(字符串)来索引的。你可以试试这样写:

self.fields[entry.entry_name] = forms.Decimal(...)

(把“entry_name”换成合适的字段名称)。

5

我觉得你可以试试用表单集。它们正好是为你想做的事情设计的——处理表单中数量不固定的项目。

撰写回答