我是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
谁能看到我做错了什么?
答案 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