Python AppEngine NDB属性验证

Python AppEngine NDB属性验证,python,google-app-engine,app-engine-ndb,wtforms,google-cloud-endpoints,Python,Google App Engine,App Engine Ndb,Wtforms,Google Cloud Endpoints,我想知道验证NDB实体属性的最佳方法是什么: 日期必须在将来 等级(整数属性)必须介于1和10之间 对另一实体的引用必须具有某些属性值(例如book.category.active必须为True) 我还使用WTForms来验证提交的请求,但我希望在较低的级别(如数据存储实体本身)强制执行验证 所以基本上我要找的是对数据存储实体调用一个validate,看看它是否有效。 如果它是有效的,我可以将实体放入数据存储,但是如果它无效,我希望检索无效的属性,包括没有成功验证的AppliesValida

我想知道验证NDB实体属性的最佳方法是什么:

  • 日期必须在将来
  • 等级(整数属性)必须介于1和10之间
  • 对另一实体的引用必须具有某些属性值(例如book.category.active必须为True)
我还使用WTForms来验证提交的请求,但我希望在较低的级别(如数据存储实体本身)强制执行验证

所以基本上我要找的是对数据存储实体调用一个validate,看看它是否有效。 如果它是有效的,我可以将实体放入数据存储,但是如果它无效,我希望检索无效的属性,包括没有成功验证的AppliesValidator

WTForms可能不够充分的另一个原因是我遇到了新的云端点。 在这个模型中,我接收的是actial实体,而不是http请求


其他AppEngine用户是如何解决这一问题的?

并非如此。这始终是最好的解决方案,但您可以自己解决。只需使用reg exs/mins和maxs等预先定义一组属性。看起来您的属性足够简单,不会太困难

注意:在Java中,我会使用Hibernate验证器和/或Spring框架的验证机制。不清楚您的问题是什么。您可以将NDB属性类划分为子类并定义validate()方法。这是在文档中,也许这不是你要问的?嗨,Guido,是的,我在文档中注意到了这一点,可能这就是我应该使用的。不幸的是,这些文档对我如何使用这个validate()方法还不够清楚。例如,是否有检查实体是否有效的方法?以及检查哪些属性无效?