2011-12-15 127 views
0

我是python和django的新手,並且無法在我的model.py文件中執行數學函數。'Module'對象不可調用

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殼

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 

任何人都可以看到我在做什麼錯?

+1

你是說錯誤發生在'ship_rate = 0.12`這行嗎? – NPE 2011-12-15 17:15:48

+0

是的,這是通過錯誤 – 2011-12-15 17:23:56

+0

嗯......這是非常*奇。你能展示完整的堆棧跟蹤嗎? – NPE 2011-12-15 17:25:06

回答

6

這個錯誤是因爲你使用

ship_rate = decimal(0.12) 

這應該是

ship_rate = decimal.Decimal(0.12) 

decimal是模塊的名稱。你不能調用模塊,這就是錯誤信息所說的。你得到的奇怪追溯的原因是模塊源和內存中的代碼不同步。創建回溯時,會使用當前版本的文件,這可能不是實際運行的代碼的版本。請務必重新加載您的網絡服務器,以確保它使用最新版本的代碼。

0

你必須實例化類order = orders()那麼你可以調用order.shipping()

蟒蛇類協定也是資本類名Order和Django的慣例是奇異的名稱,因此它可能是Order代替orders

2

看起來像錯字:經理叫做objects