-1

我正在使用 appengine、webapp2 框架。我有以下模型:

class Match(db.Model):
    date_time = db.DateTimeProperty()
    team1 = db.StringProperty()
    team2 = db.StringProperty()
    venue = db.StringProperty()
    result = db.IntegerProperty()

现在在客户端,一个事件向我的一个发布请求views,基于该发布请求,我想发送 jQuery/javascript 易于读取的 json 数据。

最好的方法是什么?

4

2 回答 2

2

在模型中:

class DictModel(db.Model):
    def to_dict(self):
       return dict([(p, unicode(getattr(self, p))) for p in self.properties()])


class Match(DictModel):
    date_time = db.DateTimeProperty()
    team1 = db.StringProperty()
    team2 = db.StringProperty()
    venue = db.StringProperty()
    result = db.IntegerProperty()

在意见中:

import json
self.response.out.write(json.dumps([m.to_dict() for m in matches]))
于 2012-04-06T22:05:08.580 回答
-1

首先,我会推荐使用 guido 的 ndb 而不是旧的 db 模块。但实际上旧的 db 模块和 ndb 都有适合您的解决方案。首先,您需要将模型从对象转换为 json 可序列化结构。特别是一个python字典。

旧数据库

dict = db.to_dict(Matchentity)

数据库

dict = Matchentity.to_dict()

现在您必须将其序列化为 json,这并不像您想象的那么简单,因为您必须处理一些属性,因为它们的值在 json 中没有多大意义。在新的 ndb 中,您可以通过在 to_dict() 方法中使用 exlude 参数来简单地排除这些,而在旧的 db 中,为每个模型编写一个特定的方法可能是一个更好的主意。然后使用 json.dump(dict) 在 ndb 邮件列表上有一些很好的讨论。

于 2012-04-07T04:21:20.307 回答