首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError at /accounts/tcresults

TypeError at /accounts/tcresults
EN

Stack Overflow用户
提问于 2017-02-20 05:41:50
回答 2查看 61关注 0票数 0

我有个错误:

TypeError at /accounts/tcresults 'ImageAndUser‘对象不可迭代。

我想在tc.html中显示来自数据库的用户数据,但是这个错误会发生。我用views.py写的

代码语言:javascript
复制
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中

代码语言:javascript
复制
<!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>

我想展示这部分的数据

代码语言:javascript
复制
{% for result in tcresults %}
           {{ result.tc }}
 {% endfor %}

我能理解这个错误的含义,因为我指定了最新的用户数据,所以数据只是一个,而且它不能是repeated.But,我不知道如何修复this.How应该写它吗?

回溯说

代码语言:javascript
复制
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)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-20 06:45:41

对象不可迭代,因为:

代码语言:javascript
复制
 ImageAndUser.objects.filter(user=request.user).order_by('id').last()

此筛选条件仅返回列表中的最后一个对象。产生的一个元素是不可迭代的。

我建议您修改代码并尝试打印查询集中的项目数。

代码语言:javascript
复制
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代码:

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>tc</title>
</head>
<body>
    <h2>
       {{ tcresults.tc }}
    </h2>
</body>
</html>
票数 1
EN

Stack Overflow用户

发布于 2017-02-20 07:09:26

从上面代码中的查询中删除.last()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42337256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档