“模块”对象不可调用

时间:2011-12-15 17:12:34

标签: python django

我是python和django的新手,在我的model.py文件中执行数学函数时遇到了麻烦。

class Orders(models.Model):
  ...
  total = models.DecimalField(
                              max_digits = 6,
                              decimal_places = 2,
                              null = True,
                              blank = True,
                              )
  ...  


  def shipping(self):
      t = self.total
      ship_rate = 0.12
      return(t*ship_rate)

当我在python shell中调用它时

dat = Orders.object.get(pk=12)
dat.shipping()

然后我收到以下错误消息:

Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\xx\xx\models.py", line 613, in shipping  
ship_rate = 0.12  
TypeError: 'module' object is not callable  

谁能看到我做错了什么?

3 个答案:

答案 0 :(得分:6)

错误是因为您使用了

ship_rate = decimal(0.12)

这应该是

ship_rate = decimal.Decimal(0.12)

decimal是模块的名称。您无法调用模块,这就是错误消息所说的内容。你得到的奇怪回溯的原因是模块源和内存中的代码不同步。创建回溯时,将使用该文件的当前版本,该版本可能不是实际运行的代码版本。请务必重新加载您的网络服务器,以确保它使用最新版本的代码。

答案 1 :(得分:2)

看起来像一个错字:经理被称为objects

答案 2 :(得分:0)

您必须实例化课程order = orders(),然后才能调用order.shipping()

python类约定也是大写类名Order,而django约定是单数名称,因此它可以是Order而不是orders