【发布时间】:2015-11-04 02:52:12
【问题描述】:
我正在为用户构建一个表单以更新对象中的字段。
这是一个包含表单列表的页面,用于更新模型的不同实例。大多数表单都可以正常工作,但是当我尝试提交页面中的第一个表单时,出现错误:type object 'word' has no attribute 'update'。我没有一个名为“word”的类,并且仅当我尝试在页面上提交第一个表单时才会出现此错误。有任何想法吗?提前致谢!
在模板中:
{% for corr in correction_list %}
<tr><td>{{corr.correction_author}}</td><td>{{corr.time | date:"m/d/Y"}}</td>
<td>{{corr.corrected_word.kwicl}}</td><td>{{corr.corrected_word.keyword}}</td>
<td>{{corr.corrected_word.kwicr}}</td><td>{{corr.corrected_word.choice1}}</td>
<td>{{corr.corrected_word.choice2}}</td><td>{{corr.corrected_word.choice3}}</td>
<td>{{corr.corrected_word.correct_choice}}</td><td>{{corr.corrected_word.manually_entered_word}}</td>
<td>{{corr.correction_made}}</td><td>{{corr.correction_word}}</td>
<td><form action="../approval/" method="POST">
{% csrf_token %}
Decision:
<select name="approved">
<option value=1>Approve</option>
<option value=2>Reject</option>
<option value=0>Hold</option>
</select><br>
<input type="text" name="corrected_word" value={{corr.corrected_word.file_position}} hidden="True"/>
<input type="number" name="correction_made" value={{corr.correction_made}} hidden="True"/>
{% if corr.correction_word %}
<input type="text" name="correction_word" value={{corr.correction_word}} hidden="True"/>
{% else%}
<input type="text" name="correction_word" value="" hidden="True"/>
{% endif %}
<input type="submit"/></form></td></tr>
{% endfor %}
在views.py中:
def submit_approval(request):
if hasattr(request, 'user') and request.user.is_authenticated():
corrected_word = request.POST['corrected_word']
updateword = item.objects.filter(file_position=corrected_word)[0]
correction_made = request.POST['correction_made']
correction_word = request.POST['correction_word']
approval = request.POST['approved']
corr = correction.objects.filter(corrected_word=updateword).filter(correction_made=correction_made).filter(correction_word=correction_word)
if request.method == 'POST':
for entry in corr:
entry.approved = approval
entry.save()
return HttpResponse('thanks')
return render(request, "revision.html")
在 urls.py 中:
url(r'^approval/$', 'english.views.submit_approval'),
追溯:
Request Method: POST
Request URL: http://localhost:8000/revision/
Django Version: 1.8.3
Python Version: 2.7.5
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'english')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware')
Traceback:
File "/Users/vl/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/vl/english/english/views.py" in revision
151. word.update(approved=formdata)
Exception Type: AttributeError at /revision/
Exception Value: type object 'word' has no attribute 'update'
【问题讨论】:
-
堆栈跟踪是什么?
-
你能给我们完整的堆栈跟踪吗?也许这个异常是从另一个模块抛出的,也许是你的......所以给我们更多信息。
-
@VickieLi 请编辑问题以包含堆栈跟踪,而不是将其作为评论
-
回溯清楚地表明错误发生在
revision视图中,而不是在submit_approval中 -
谢谢!似乎只有我在模板中的第一个表单映射到错误的视图。是什么原因造成的?