Результаты оператора импорта Python в NoneType - PullRequest
2 голосов
/ 04 января 2012

Хорошо, вот упрощенная версия того, что сводит меня с ума весь день:

models.py:

from django.template.defaultfilters import slugify
class MyModel(models.Model):
    ....

    def populate_property(self):
        self.property = slugify('string of text')

Мой взгляд тогда вызывает populate_property(), но яполучите ошибку NoneType object is not callable.

НО, если я добавлю встроенный import из slugify, то это будет работать.

Это код, который работал долгое время, поэтому я сейчас в растерянности.

PYTHONPATH, но выглядит нормально, и среда создается с использованием buildout

Любая помощь будет высоко ценится ...

Ответы [ 3 ]

1 голос
/ 04 января 2012

После устранения подобной проблемы кажется, что в вашем коде есть циклическая ссылка (этот файл импортирует что-то, что импортируется из этого файла).Нет ничего плохого в том, чтобы поместить импорт в populate_property.

0 голосов
/ 11 сентября 2014

Если вы используете Django <1.7, я заметил, что это почти наверняка из-за циклического импорта, вызванного <code>import signal. Я всегда сталкивался со странными ситуациями, когда он работает локально, может быть, на сервере dev и, вероятно, не на сервере prod ...

0 голосов
/ 04 января 2012

Исходя из кода, который вы разместили, проблем не должно быть.Единственное, что я могу придумать, чтобы вызвать упомянутую вами ошибку, это то, что в какой-то момент вы изменили значение slugify.Скорее всего, это было случайное использование = при намерении использовать == или что-то подобное.

Лучший способ проверить это оставить оставшуюся часть кода как есть, но в дополнение к импорту вытеперь добавьте from django.template import defaultfilters.Затем измените конкретную строку кода на вопрос:

def populate_property(self):
    self.property = defaultfilters.slugify('string of text')

Если это работает, попробуйте отследить место, где slugify был переназначен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...