【发布时间】:2013-11-28 21:25:31
【问题描述】:
我在 models.py 中定义了一个类别的选择,它在 forms.py 中被引用,如下所示:
models.py
class Exp(models.Model):
CATEGORIES = ( ('Inc', 'Inc'),\
('Hom', 'Hom'),\
('syn', 'Syn'),\
('Was', 'Was')\
)
forms.py
class ExpForm(ModelForm):
category = forms.MultipleChoiceField(choices=Exp.CATEGORIES, widget=forms.CheckboxSelectMultiple())
class Meta:
model = Exp
views.py
def view_exp(request):
if request.method == "POST":
form = ExpForm(request.POST)
if form.is_valid():
...
多选选项在表单中正确显示,但是当我选择多个选项时,views.py 中的 form.is_valid() 返回 false 并出现 AttributeError: 'str' object has no attribute 'status_code 错误。我知道我得到的是 str 而不是 HttpResponse 对象,但不知道如何解决此错误。任何帮助表示赞赏。
注意:同一表单中还有其他类型为 CharField 的字段。
这是回溯:
Traceback (most recent call last):
File "/software/python/python-2.7.3/lib/python2.7/site-packages/django/core/handlers/base.py", line 187, in get_response
response = middleware_method(request, response)
File "/software/python/python-2.7.3/lib/python2.7/site-packages/django/middleware/common.py", line 106, in process_response
if response.status_code == 404:
AttributeError: 'str' object has no attribute 'status_code'
【问题讨论】:
-
能否提供完整的回溯?
-
@mariodev,我用回溯更新了原始帖子,谢谢。
-
是什么让您认为是 is_valid 方法导致了错误?这不是回溯显示的内容。实际上,错误是由您的视图返回字符串而不是 HttpResponse 引起的。
-
感谢您指出错误。我仍然不明白为什么我得到一个字符串而不是
HttpResponse对象! -
@UNagaswamy - 您必须出示您的完整视图代码才能让我们弄清楚。
标签: django django-forms multi-select multichoiceitems