在Appengine Datastore中将ReferenceProperty序列化为JSON
我正在使用以下代码将我的应用引擎数据存储转换成JSON格式。
class DictModel(db.Model):
def to_dict(self):
return dict([(p, unicode(getattr(self, p))) for p in self.properties()])
class commonWordTweets(DictModel):
commonWords = db.StringListProperty(required=True)
venue = db.ReferenceProperty(Venue, required=True, collection_name='commonWords')
class Venue(db.Model):
id = db.StringProperty(required=True)
fourSqid = db.StringProperty(required=False)
name = db.StringProperty(required=True)
twitter_ID = db.StringProperty(required=True)
这段代码会返回以下的JSON响应。
[
{
"commonWords": "[u'storehouse', u'guinness', u'badge', u'2011"', u'"new', u'mayor', u'dublin)']",
"venue": "<__main__.Venue object at 0x1028ad190>"
}
]
我该如何让实际的场馆名称显示出来呢?
1 个回答
3
首先,虽然这不是你问题的直接回答,但强烈建议使用 simplejson 来生成 JSON,而不是自己尝试把结构转换成 JSON 字符串。
至于你的问题,ReferenceProperty 就是用来指向你的 Venue 对象的。所以你可以像平常一样使用它的属性。
可以试试这样的写法:
cwt = commonWordTweets() # Replace with code to get the item from your datastore
d = {"commonWords":cwt.commonWords, "venue": cwt.venue.name}
jsonout = simplejson.dumps(d)