首页 > 解决方案 > 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 的对象。如何,我缺少什么?

标签: pythondjango

解决方案


在 shell 示例中,您没有将 分配给value_lista否则您会得到与视图中相同的错误。

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


推荐阅读