gpt4 book ai didi

python - 使用 Jinja2 grouby 过滤器出现属性错误

转载 作者:行者123 更新时间:2023-11-30 23:40:17 27 4
gpt4 key购买 nike

尝试让 groupby 过滤器正常工作时出现属性错误。我的 groupby 代码如下所示:

{% for year, year_purchases in purchases|groupby('PurchaseDate.year')|reverse %}
<h2 class="year">{{ year }}</h2>
{% for ... %}
{% endfor %}
{% endfor %}

其中购买是PurchaseEntity的列表:

class PurchaseEntity:
def __init__(self):
self.PurchaseDate = ''
self.Orders = []

def load_from_query(self,result):
self.PurchaseDate = result.PurchaseDate

我收到以下错误:

AttributeError
AttributeError: PurchaseEntity instance has no attribute '__getitem__'

问题似乎出在environment.py中:

def getitem(self, obj, argument):
"""Get an item or attribute of an object but prefer the item."""
try:
return obj[argument]
except (TypeError, LookupError): #<-- Here it raises the error
if isinstance(argument, basestring): #<-- It never reaches here
try:
attr = str(argument)
except Exception:
pass
else:
try:
return getattr(obj, attr)
except AttributeError:
pass
return self.undefined(obj=obj, name=argument)

我不认为这是 Jinja2 或“groupby”错误,因为 getitem 函数到处都在使用。我用谷歌搜索并找不到任何相关内容。但是,我所做的是更改“except (TypeError, LookupError):”行,并且它可以与任何此替代方案一起使用:

except:
except Exception:

我不知道我的类声明是否错误,或者我是否只是遗漏了一些东西,因为我尝试了其他类(由 SQLAlchemy 使用自动加载创建)并且工作正常。有什么建议吗?

顺便说一句,发送给 getitem 的参数是:

>>> (obj,argument)
(<project.logic.purchase.PurchaseEntity instance at 0x050DF148>, 'PurchaseDate')
>>> obj.PurchaseDate
datetime.datetime(2012, 9, 25, 17, 1, 44)

最佳答案

尝试使PurchaseEntity扩展对象:

class PurchaseEntity(object):

当您尝试查找某个项目但它们没有该项目时,不扩展任何内容的基本类会抛出 AttributeError 。对象抛出类型错误。

>>> class Foo:
... def foo(self):
... void
...
>>> class Bar(object):
... def bar(self):
... void
...
>>> foo = Foo()
>>> bar = Bar()
>>> foo['foo']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: Foo instance has no attribute '__getitem__'
>>> bar['bar']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'Bar' object has no attribute '__getitem__'

关于python - 使用 Jinja2 grouby 过滤器出现属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12738338/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com