Appengine'de, otomatik olarak hesaplanan ve nesne ile saklanan bir özellik değerine sahip olmaya çalışıyorum.Bir python uygulama motoru modelinde put() yönteminin üzerine yazmak nasıl?
Sınıfım var, Dikdörtgen ve genişliği, yüksekliği ve alanı var. Açıkçası alan genişlik ve yükseklik fonksiyonudur, ama bir özellik olmasını istiyorum çünkü onu sıralamak için kullanmak istiyorum. Yani şöyle Dikdörtgen depolarken bölgeyi gizlice koymak() işlevini değiştirmek için deneyin:
re1 = Rectangle(width=10, height=10)
re1.put()
print re1.area # >> 10
Ama ne zaman: Doğrudan Alan nesne üzerinde put()
çağırdığınızda
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)
Bu işleri db.put()
'u kullanıyorum (örneğin bir çok şeyi bir kerede saklamak için), bu kırılmalar.
re2 = Rectangle(width=5, height=5)
db.put(re2)
print re2.area # >> None
Hesaplanan değerde 'gizlice girmenin uygun yolu nedir?
Öğeyi veritabanından alırsanız ne alırsınız? hesaplanan alan nedir? – rocksportrocker
Veri deposunu kontrol ettim ve aynı şeyi söylüyor; İlk dikdörtgenin “10” ve ikinci için “Yok”. – Paul
Ben db.put() 'asla nesneler üzerinde bireysel' koymak() 'yöntemini çağırır' şüpheli - muhtemelen veritabanı özellikleri için onları inceler ve toplu insert ifadeleri yaratır. Eğer 'put' yerine '__init__' içinde bir alan belirlerseniz, ne olur? – larsks