我有个错误:
TypeError at /accounts/tcresults 'ImageAndUser‘对象不可迭代。
我想在tc.html中显示来自数据库的用户数据,但是这个错误会发生。我用views.py写的
def tc(request):
d = {
'tcresults': ImageAndUser.objects.filter(user=request.user).order_by('id').last(),
}
return render(request, 'registration/accounts/tc.html', d)在tc.html中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tc</title>
</head>
<body>
<h2>
{% for result in tcresults %}
{{ result.tc }}
{% endfor %}
</h2>
</body>
</html>我想展示这部分的数据
{% for result in tcresults %}
{{ result.tc }}
{% endfor %}我能理解这个错误的含义,因为我指定了最新的用户数据,所以数据只是一个,而且它不能是repeated.But,我不知道如何修复this.How应该写它吗?
回溯说
Traceback:
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
39. response = get_response(request)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
187. response = self.process_exception_by_middleware(e, request)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
185. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/Desktop/accounts/views.py" in tc
142. return render(request, 'registration/accounts/tc.html', d)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/shortcuts.py" in render
30. content = loader.render_to_string(template_name, context, request, using=using)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/loader.py" in render_to_string
68. return template.render(context, request)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/backends/django.py" in render
66. return self.template.render(context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/base.py" in render
208. return self._render(context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/base.py" in _render
199. return self.nodelist.render(context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/base.py" in render
994. bit = node.render_annotated(context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/base.py" in render_annotated
961. return self.render(context)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/django/template/defaulttags.py" in render
165. values = list(values)发布于 2017-02-20 06:45:41
对象不可迭代,因为:
ImageAndUser.objects.filter(user=request.user).order_by('id').last()此筛选条件仅返回列表中的最后一个对象。产生的一个元素是不可迭代的。
我建议您修改代码并尝试打印查询集中的项目数。
def tc(request):
tcresults = ImageAndUser.objects.filter(user=request.user).order_by('id').last()
print tcresults, ' queryset'
print len(tcresults), ' length'
d = {
'tcresults': tcresults,
}
return render(request, 'registration/accounts/tc.html', d)并按以下方式更新html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>tc</title>
</head>
<body>
<h2>
{{ tcresults.tc }}
</h2>
</body>
</html>发布于 2017-02-20 07:09:26
从上面代码中的查询中删除.last()。
https://stackoverflow.com/questions/42337256
复制相似问题