Python in django models.py



在python的IDLE

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函数做到这一点?

ManyToManyField的属性产生一个管理器,而您使Area成为一个方法。

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

最新更新