我在一页上使用两种形式(有我的理由)。它们不是模型形式。我试图通过使用前缀来验证它们。我在这里找到它:Proper way to handle multiple forms on one page in Django
但是,当我尝试获取cleaned_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']
-没有任何帮助。 最佳答案
将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