python import语句导致NoneType

时间:2012-01-03 20:24:37

标签: python django import

好的,所以这是一个让我整日疯狂的事情的简化版本:

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 个答案:

答案 0 :(得分:1)

刚刚征服了类似的问题,听起来你的代码中有一个循环引用(这个文件导入从这个文件导入的东西)。将导入放在populate_property中没有坏处。

答案 1 :(得分:0)

根据您发布的代码,应该没有问题。我能想到的唯一导致你提到的错误的是你改变了slugify的值。当打算使用=或类似内容时,很可能意外使用==

检查的最佳方法是保留其余代码,但除了现在的导入外,还要添加from django.template import defaultfilters。然后,将有问题的特定代码行更改为:

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

如果有效,请尝试追踪slugify重新分配的位置。

答案 2 :(得分:0)

如果您使用的是Django< 1.7,我注意到这几乎可以肯定是由import signal导致的循环导入。 我总是在奇怪的情况下,它在本地工作,也许在开发服务器上,可能不在prod服务器上......