2013-03-26 4 views
2

Сначала попробуйте декор django.utils.functional.lazy. Моя функция возвращает два списка, поэтому я украшаю его с помощью @lazy (list, list). Это простая функция jane, а не метод/свойство класса.Как использовать django @ lazy decorator?

Я получаю прокси-сервер «» «объект не может быть вызван», когда я пытаюсь вызвать результирующую украшенную функцию.

+0

что один отлично подходит для методов/свойств на классе, но не работает на равнине функции. – s29

ответ

4

Я не думаю, что вы можете использовать Джанго ленивым, как декоратор. Вы можете использовать его как вызов функции:

lazy_function = lazy(f, type) 

где f функция вам нужно сделать ленивым и type это ожидаемый тип данных.

Также как вы возвращаете два списка? Как:

def a(): 
    return [], [] 

Если да, то технически вы возвращаете кортеж, следовательно, вы должны использовать ленивые как:

lazy_f = lazy(f, tuple) 
+0

Спасибо, ты прав, я ошибочно предположил, что он был написан как декоратор. – s29

+1

Если вам действительно нужен декоратор, я работаю над библиотекой django, которая обеспечивает ее. Вы можете посмотреть https://github.com/miki725/django-auxilium/blob/develop/django_auxilium/utils/functools/lazy.py. Любая обратная связь будет оценена. Вы можете, конечно, проблемы с файлами, если найдете что-то не так. – miki725