2

我在一页上使用两种表格(我有我的理由)。它们不是模型形式。我正在尝试使用前缀来验证它们。我在这里找到了它:Proper way to handle multiple forms on one page in Django 但是当我尝试获取clean_data时,我得到了关键错误。这是我的一些代码:

add_form = AbsenceTypeForm(request.POST, prefix = 'atype')
if add_form.is_valid():
    absence_type = AbsenceType(
        client = client_instance,
        name = add_form.cleaned_data['type_name'],
        gainful = add_form.cleaned_data['gainful'],
    )
    absence_type.save()

我得到 type_name 的 KeyError。我试图添加cleaned_data['atype-type_name']- 没有任何帮助。

4

2 回答 2

2

将cleaned_data 转储到某个地方、屏幕或文件中怎么样——只是为了检查它获得的密钥?调试器还应该在本地显示字典。我猜它是丢失/拼写错误的前缀或表单字段名称。

顺便说一句,我同意使用 .get() 更安全(即使看起来表单验证应该已经由 is_valid() 处理,但是您可能决定将来将该字段更改为非强制性,然后此代码将错误),所以:

name = add_form.cleaned_data.get('type_name',None),
gainful = add_form.cleaned_data.get('gainful',None),

if name and gainful:
    pass
    #rest of the code
于 2011-06-26T12:10:46.950 回答
0

也许您type_name在发布的表格中留空;cleaned_data仅包含非空表单字段的键。

于 2011-06-26T09:21:03.857 回答