带有前缀的窗体上的Django中的键错误

2024-10-01 13:24:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一页上使用两张表格(我有我的理由)。它们不是模型表格。我试图用前缀来验证它们。我在这里找到的:Proper way to handle multiple forms on one page in Django 但是当我试图获取干净的数据时,我得到了密钥错误。 以下是我的一些代码:

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()

我得到了键入\u name的KeyError。我试图添加cleaned_data['atype-type_name']-没有任何帮助。在


Tags: name模型formclientadddatatype表格
2条回答

可能您在发布的表单中留下了type_name为空;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

相关问题 更多 >