我有一个ndb.Model
类ProjRoute
,其属性date
我在模型中声明如下:
class ProjRoute(ndb.Model):
date = ndb.DateTimeProperty(required=True)
priceValue = ndb.FloatProperty(default=None)
attachement = ndb.KeyProperty()
src = PriceFilterProperty()
dest = PriceFilterProperty()
# Required qty
reqQty = ndb.FloatProperty()
ldQty = ndb.FloatProperty(default=0)
unldQty = ndb.FloatProperty(default=0)
amountDue = ndb.FloatProperty(default=0)
scale1 = ndb.FloatProperty(default=0)
scale2 = ndb.FloatProperty(default=0)
toll1 = ndb.FloatProperty(default=0)
toll2 = ndb.FloatProperty(default=0)
port_permit = ndb.FloatProperty(default=0)
port_scale = ndb.FloatProperty(default=0)
maintenance = ndb.FloatProperty(default=0)
other = ndb.FloatProperty(default=0)
fuel = ndb.FloatProperty(default=0)
gratuity = ndb.FloatProperty(default=0)
driver_allow = ndb.FloatProperty(default=0)
adriver_allow = ndb.FloatProperty(default=0)
driver_bonus = ndb.FloatProperty(default=0)
我很确定在创建新的ProjRoute
实例时确实设置了日期值,实际上在调用put()
函数时我没有遇到任何问题。
但是,当我尝试读取实例时,我收到错误,因为date
属性为null。
BadValueError: Entity has uninitialized properties: date
每次尝试读取实例时都不会出现此错误,这是任意的。
我认为GAE本身一定有问题,但是有人知道如何解决它或知道解决方法吗?
顺便说一下,当我记录任何ProjRoute
实例时,我发现属性存储为GenereicProperty
而非FloatProperty
和KeyProperty
,就像我在模型中声明的那样。我认为这可能是相关的。
如果您需要查看它,以下是我创建新实例的代码:
trsPrices = map(float, self.readAll('trs-price'))
for src, dest, price in zip(self.readAll('trs-price-src'), self.readAll('trs-price-dest'), trsPrices):
route = ProjRoute(id=newPrice.src+"-"+newPrice.dest, parent=routeParent)
route.attachement = newPrice.attachement
route.src, route.dest = newPrice.src, newPrice.dest
route.date = trsSrv.sdate
route.priceValue = None
toSave.append(route)
# ... Some irrelevent code
ndb.put_multi(toSave)
另外,仅供参考,我尝试使用route.put()
代替ndb.put_multi
,但问题仍然存在。