gpt4 book ai didi

django - 在 form.cleaned_data 中删除了动态添加的表单字段

转载 作者:行者123 更新时间:2023-12-04 12:37:35 25 4
gpt4 key购买 nike

我在我的模板中加入了一些客户端 Javascript,允许用户动态地向表单添加字段。我的问题是这些字段在 form.cleaned_data 中被清除,所以我无法通过这种方式访问​​它们。

所有字段都可以在 request.POST 中访问,所以我可以用那个来解决这个问题,但我想以“正确的方式”做到这一点,我认为解决方案在于使用 django 表单而不是直接读取请求。

我尝试覆盖 form.clean() ,但似乎数据到达那里时已经消失了。

其他详细信息:我正在命名这些字段 fieldname_x ,其中 x是一个数字。在 request.POST , request.POST['fieldname']是所有值的列表,但 form.cleaned_data只包含每个列表的最后一个值。

最佳答案

你知道这些字段是什么类型的吗?它们只是简单的文本字段吗?我做过类似的事情,创建动态表单。

# make sure these exist by examining request.POST
custom_fields = ['fieldname_1', 'fieldname_2']

attrs = dict((field, forms.CharField(max_length=100, required=False))
for field in custom_fields)
DynamicForm = type("DynamicForm", (YourBaseForm,), attrs)
submitted_form = DynamicForm(request.POST)

您提交的表单现在应该包含您需要的所有字段及其值。您可能想要删除 required=False,但这取决于您。

它的作用是执行基本表单的动态子类,将作为 attrs 传入的属性添加到类定义中。因此,当您使用发布数据创建实例时,它们应该被正确映射。

编辑:

我更仔细地阅读了这个问题。您需要做的是确保您的动态输入元素被正确命名,并且一旦到达 django,这些值就会映射到这些字段名。否则 request.POST 将无法正确填写表单。
<input type='text' name='fieldname_1' value='value_for_field_1' /> 

等等

关于django - 在 form.cleaned_data 中删除了动态添加的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com