【发布时间】:2020-04-06 17:46:44
【问题描述】:
我试图在Django 中显示我的数据库字段,当用户不是超级用户时,
给定一个像GR96 0810 0010 0000 0123 4567 890 这样的字段,
该值应在任何地方显示为---7890,这是我的代码:
view.py:
def index(request):
obj = MyModel.objects.all()
if request.user.is_superuser:
return render(request, 'app/index.html', {'obj': obj})
else:
obj = len(str(obj))-5
return render(request, 'app/index.html', {'obj': obj})
Template:
{% for ele in obj %}
<tr>
<th scope="row">{{ ele.id }}</th>
<td>{{ ele }}</td>
</tr>
{% endfor %}
This is error:
TypeError at /
'int' object is not iterable
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 3.0
Exception Type: TypeError
Exception Value:
'int' object is not iterable
....
你能帮帮我吗? 提前谢谢你
【问题讨论】:
-
在第一个
if中,您不是 obj,而是查询集(可迭代对象序列)。else部分仅包含一个 obj。在渲染时,您正在尝试迭代不可迭代的对象。那是因为你有一个例外。将第二个obj更改为 iterablesequence(例如使用列表) -
你能提供你的模型吗?
-
在
else情况下obj不是MyModel,它是一个数字,因为你计算len(str(obj))-5。\ -
我明白了,但是我测试了几个代码来导出一个有效且正确的 ele ....那我应该为 That (if ... else...) 语句做什么?
-
@Zoleikha:请在下面查看我的回答,如果您还有其他问题,请告诉我。
标签: python django web typeerror iterable