2013-01-17 72 views
0

這工作在Python IDLEPython的Django中的models.py

class A: 
    b = 0 

    def __init__(self, value): 
     self.b = value 

obj1 = A(1) 
obj2 = A(2) 
obj3 = A(3) 
k = [obj1, obj2, obj3] 
result = sum(i.b for i in k) 
print str(result) 

但這並不適用於Django/Python的工作

from django.db import models 

class Flatbar(models.Model): 
    width = models.IntegerField() 
    height = models.IntegerField() 

    def Area(self): 
     return self.width * self.height 

class Section(models.Model): 
    flatbars = models.ManyToManyField(Flatbar) 

    def Area(self): 
     return str(sum(f.Area for f in self.flatbars)) 

這是爲什麼不工作,我會怎麼做這使用一個lambda函數?

+0

「不工作」是什麼意思?你會得到什麼錯誤? –

回答

3

ManyToManyField的屬性產生一個管理器,並且您製作了一個方法Area

return str(sum(f.Area() for f in self.flatbars.all())) 
+0

你的可能是正確的關於經理。所有(),但我已經試過這個,它不工作= [ – Pizzaguru

+0

對不起我的編輯..我不知道你可以做到這一點!那麼,在這種情況下,這應該逐字逐句Pizzaguru。確保你正在替換正確的方法。 –

+0

工程就像一個魅力!非常感謝 – Pizzaguru