Django 视图 give int' 对象在 shell 中给出来自模型的对象时没有属性



当我尝试从视图中的模型中获取数据时,我遇到了此错误。问题是,我清楚地了解这个错误是什么,但我非常困惑为什么会发生。当我在 django shell 中运行以下代码时,我得到了我想要的东西。

在 django shell 中:

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)

一切都很好。我可以从我的模型中获取对象列表,迭代它并调用方法。

但在我 view.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,不是预防计划中心的对象,我错过了什么?

在 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~ 整数列表。

最新更新