今天我在这里读了一篇关于如何在GAE restapi中使用一对多关系的文章。你知道吗
https://cloud.google.com/appengine/articles/modeling
我认为这很简单,但后来我意识到我使用的是ndb而不是db,所以我不能使用数据库引用属性. 你知道吗
这是我的路线模型
class Route(ndb.Model):
driver_id = ndb.IntegerProperty()
requester_id = ndb.IntegerProperty()
startpoint = ndb.GeoPtProperty(required=True)
endpoint = ndb.GeoPtProperty(required=True)
regular = ndb.BooleanProperty(required=True)
date_and_time = ndb.DateTimeProperty(required=True)
places_available = ndb.IntegerProperty()
val_lift = ndb.IntegerProperty()
这里我有我的模型RegularDays,如果接收到的JSON中的Regular是真的,那么将使用它
class RegularDays(ndb.Model):
route = db.ReferenceProperty(Route,
collection_name='regular_days')
Monday = ndb.BooleanProperty(required=True)
Tuesday = ndb.BooleanProperty(required=True)
Wednesday = ndb.BooleanProperty(required=True)
Thursday = ndb.BooleanProperty(required=True)
Friday = ndb.BooleanProperty(required=True)
Saturday = ndb.BooleanProperty(required=True)
Sunday = ndb.BooleanProperty(required=True)
所以我要做的就是这样。你知道吗
if newroute.regular:
RegularDays(route=newroute,
Monday=route_json['Days']['Monday'],
Tuesday=route_json['Days']['Tuesday'],
Wednesday=['Days']['Wednesday'],
Thursday=route_json['Days']['Thursday'],
Friday=route_json['Days']['Friday'],
Saturday=route_json['Days']['Saturday'],
Sunday=route_json['Days']['Sunday']).put()
但是现在我对如何修改这个代码使其与NDB一起工作感到非常困惑。你知道吗
谢谢你的帮助
ndb
中的等价物是^{您会发现,在您的示例中,只需替换属性名就足够了,但关键字
collection_name
将不再起作用:这是因为旧的ReferenceProperty
在幕后为您做了一些工作,在引用的类中创建了一个查询属性,以使您的生活更轻松,但它被放到了ndb
,选择一种更明确的方法,只存储密钥,让您担心实现细节。你知道吗如果您想知道的话,这种更改的原因是自动属性非常容易使用,以至于忽略真正发生的事情(看不见,想不到)是很常见的,并且最终会导致大量额外的工作和查询,而这些工作和查询在优化时非常耗时。你知道吗
这对你来说意味着不是写这句话:
您必须自己编写
phone_numbers
查询代码:)相关问题 更多 >
编程相关推荐