0
我剛開始亂用@property,我有一個似乎默默地消失,我想不通爲什麼:Django的模型@property失敗默默
class Tap(models.Model):
beer = models.CharField(max_length=20)
ibu_actual = models.IntegerField(default=0)
og_actual = models.DecimalField(max_digits=4,
decimal_places=3, default=0)
fg_actual = models.DecimalField(max_digits=4,
decimal_places=3, default=0)
@property
def calories(self):
if (self.og_actual == 1 and self.fg_actual == 1):
print "0 kCal"
return 0
else:
calories_from_alcohol = (1881.22 * (self.fg_actual * (self.og_actual self.fg_actual)))
calories_from_carbs = 3550 * self.fg_actual * ((0.1808 * self.og_actual) + (0.8192 * self.fg_actual) - 1.0004)
print "%d kCal" % (calories_from_alcohol + calories_from_carbs)
return calories_from_alcohol + calories_from_carbs
在我的模板,只是熱量返回空白,並且在'runserver'下運行時,我的打印字符串從不出現。我添加了 TEMPLATE_STRING_IF_INVALID =「無效字符串'%s'」 到我的設置,並且它顯示沒有任何東西正在生成模板顯示。 例如,如果我愚蠢的計算,每個設置爲1,那麼它的工作原理。 所以我猜測數學會因爲某種原因而失敗?不同的屬性做工作:
@property
def bugu(self):
#BU:GU is (ibu/((og-1)*1000)) if og > 1
if self.og_actual > 1:
print "bugu"
return (self.ibu_actual/((self.og_actual-1)*1000))
else:
return 0
和我的數學在shell工作:
(InteractiveConsole)
>>> fg = 1.011
>>> og = 1.051
>>> fg + og
2.062
>>> (1881.22 * (fg * (og -fg)))
76.07653680000006
>>> 3550 * fg * ((0.1808 * og) + (0.8192 * fg) - 1.0004)
63.99993959999945
>>>
我不以任何方式蟒蛇高手,所以我難倒!
謝謝。
更新: 我加了一對夫婦更調試打印語句,並正在進入功能:
Starting development server at http://192.168.0.15:7000/
Quit the server with CONTROL-C.
bugu
starting calories
calculating calories from carbs
bugu
starting calories
calculating calories from carbs
bugu
starting calories
calculating calories from carbs
[13/Apr/2014 05:26:30] "GET/HTTP/1.1" 200 7530
我試着換了酒精和碳水化合物計算的順序,但它似乎並沒有發揮一個差異,它停在任何一個。
你從哪裏得到想要打印的內容會顯示在模板中的想法? –
我的打印語句應該在http請求之前的'runserver'下顯示。它爲bugu屬性(和其他)提供了功能,但不適用於卡路里功能。我不打算在我的模板中顯示要打印的內容。 – dennyreiter
這是你在班級或實例中唯一的「卡路里」嗎? –