В Appengine я пытаюсь автоматически рассчитать значение свойства и сохранить его вместе с объектом.
У меня есть класс Rectangle, и у него есть ширина, высота и площадь. Очевидно, что область является функцией ширины и высоты, но я хочу, чтобы она была свойством, потому что я хочу использовать ее для сортировки. Поэтому я пытаюсь изменить функцию put (), чтобы скрыть область при сохранении прямоугольника следующим образом:
class Rectangle(db.Model):
width = db.IntegerProperty()
height = db.IntegerProperty()
area = db.IntegerProperty()
def put(self, **kwargs):
self.area = self.width * self.height
super(Rectangle, self).put(**kwargs)
Это работает, когда я вызываю put()
непосредственно к объекту Area:
re1 = Rectangle(width=10, height=10)
re1.put()
print re1.area # >> 10
Но когда я использую db.put()
(например, чтобы сохранить много их сразу), это ломается.
re2 = Rectangle(width=5, height=5)
db.put(re2)
print re2.area # >> None
Как правильно «подсунуть» вычисленное значение?