【问题标题】:Python Appengine initialize ndb model object with JSONPython Appengine 使用 JSON 初始化 ndb 模型对象
【发布时间】:2014-09-25 17:09:32
【问题描述】:

我已经看到无数关于如何使用 to_dict() 和 json.dumps() 将 ndb.Model 对象编码为 json 的示例,但找不到一个关于如何做相反的工作示例:解码json.loads() 的结果到 ndb.Model 对象。

这是我尝试过的,但没有成功:

def post(self):
    payload = json.loads(self.request.body)
    assert isinstance(payload, dict), 'Bad payload'

    myCustomClass = CustomClass(**payload)

请注意,尽管 CustomClass 继承自 ndb.Model 并具有简单的属性(StringProperty、IntegerProperty...),但它也从其他类继承并具有重复的属性(如果它改变了答案...虽然我希望得到一个不依赖于班级内部的一般性答案。

谢谢。

【问题讨论】:

  • 你看populate了吗?
  • @MihailR 该方法似乎很复杂,我无法从文档中弄清楚如何使用它,也无法找到一个好的相关示例……您能否发布完整的答案?

标签: android python json google-app-engine


【解决方案1】:

populate

不太确定继承问题(您可以提供更具体的示例),但您会遇到这样的情况:

def post(self):
    payload = json.loads(self.request.body)
    assert isinstance(payload, dict), 'Bad payload'

    myCustomClass = CustomClass()
    myCustomClass.populate(**payload)
    myCustomClass.put()

另外,请注意,您可能应该首先验证用户提交的数据,而不是盲目地立即存储所有内容。

【讨论】:

    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2014-05-18
    • 2020-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多