python - Django视图在shell中给出模型中的对象时给出''int'对象没有属性''
问题描述
当我尝试从视图中的模型获取数据时出现此错误。事情是,我清楚地了解此错误是什么,但我很困惑为什么会发生它。这是因为当我在 django shell 中运行以下代码时我得到了我想要的。
在 Django 外壳中:
In [2]: from ep.models import *
In [3]: a = PreventionProgramCenter.objects.all()
In [4]: a.values_list('center',flat=True)
Out[4]: <QuerySet [1, 2, 3]>
In [5]: b=a[0]
In [6]: b
Out[6]: <PreventionProgramCenter: PreventionProgramCenter object (1)>
In [7]: b.center.zip_code
Out[7]: '53-334'
In [8]: for i in a:
...: print(i)
...:
PreventionProgramCenter object (1)
PreventionProgramCenter object (2)
PreventionProgramCenter object (3)
一切都很好。我可以从我的模型中获取对象列表,遍历它并调用方法。
但在我看来.py
zip_codes = []
zip_codes_obj = PreventionProgramCenter.objects.all()
zip_codes_obj = zip_codes_obj.values_list('center',flat=True)
for zip_code in zip_codes_obj:
print(zip_code)
zip_codes.append(zip_code.center.zip_code)
zip_code
只是 int,不是 PreventionProgramCenter 的对象。如何,我缺少什么?
解决方案
在 shell 示例中,您没有将 分配给value_list
,a
否则您会得到与视图中相同的错误。
In [3]: a = PreventionProgramCenter.objects.all()
In [4]: a.values_list('center',flat=True)
Out[4]: <QuerySet [1, 2, 3]>
在这里,变量a
保持PreventionProgramCenter.objects.all()
,PreventionProgramCenter
对象的可迭代。在查看代码时
zip_codes_obj = PreventionProgramCenter.objects.all()
zip_codes_obj = zip_codes_obj.values_list('center',flat=True)
您正在分配zip_codes_obj
一个values_list
~ 整数列表。
推荐阅读
- java - 以下哪一项是在 java 中调用用户定义类中存在的方法的更好的编程实践?
- flutter - 滚动时颤动水平列表视图点指示器
- c++ - 当我尝试在 C++ 中对谷物进行序列化时,我遇到了一个奇怪的错误
- java - 如何在 SpringBootTest 中加载不同的 application.properties 文件
- python - 一个 for 循环和 while 循环的问题。结果不是我所期望的
- python - 如何在 python pandas 中显示销售数据的每月变动?
- arduino - 如何阻止 if 语句重复?
- java - Eclipse 选项卡标题未正确显示
- node.js - 如何优雅地结束 Node 中的 HTTP2 通信
- node.js - 错误:Redis 连接到 127.0.0.1:6379 失败 - 连接 ECONNREFUSED 127.0.0.1:6379 Heroku