我们目前正在尝试从 Django 1.2 升级到 1.4,但是我们遇到了大量抱怨表单中缺少字段的“Caught FieldError”消息,就好像 Django 已经决定在升级时对表单验证变得更加严格。
在 1.3 中添加了一个新的字段验证代码块,它似乎导致了错误,如果取出该块,一切正常。删除此额外验证是否有任何严重后果?
我们删除的代码是:
opts.exclude, opts.widgets, formfield_callback)
# make sure opts.fields doesn't specify an invalid field
none_model_fields = [k for k, v in fields.iteritems() if not v]
missing_fields = set(none_model_fields) - \
set(declared_fields.keys())
if missing_fields:
message = 'Unknown field(s) (%s) specified for %s'
message = message % (', '.join(missing_fields),
opts.model.__name__)
raise FieldError(message)
这是来自 django/forms/models.py 大约第 207 行
显然错误是未知字段,未捕获 FieldError,我很抱歉。