如何使用django @lazy装饰器?

2 投票
1 回答
3213 浏览
提问于 2025-04-17 20:17

首先,我尝试使用django.utils.functional.lazy这个装饰器。我的函数返回两个列表,所以我用@lazy(list, list)来装饰它。这个函数很简单,不是在类里的方法或属性。

但是当我尝试调用这个被装饰的函数时,出现了一个错误,提示“‘proxy’对象不可调用”。

1 个回答

5

我觉得你不能把Django的lazy当作装饰器来用。你可以把它当作一个函数调用来使用:

lazy_function = lazy(f, type)

这里的f是你想要变成懒加载的函数,而type是你期望的数据类型。

另外,你是怎么返回这两个列表的呢?比如:

def a():
    return [], []

如果是这样的话,从技术上讲,你实际上是在返回一个元组,所以你应该这样使用lazy:

lazy_f = lazy(f, tuple)

撰写回答