问题标签 [polymodel]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - 一个类可以是 Google App Engine 中的 Expando 和 Polymodel 吗?
如果我创建一个 PolyModel 类,例如 Person,我可以在该 Polymodel 下创建一个 Expando 模型吗?例如,一个也是 Expando 模型的 Male(Person) 类?如果是这样,怎么做?
谢谢!
python - Google App Engine 将 PolyModel 作为子类
当我像这样运行 Google App Engine 时:
当我跑步时,例如
这将打印“父亲打招呼”。我希望这会打印出“儿子打招呼”。有谁知道如何做到这一点,在这里?
编辑:
最终,问题是我将 Spawn 对象保存为父亲对象。即使父对象(在我的应用程序中)具有较少的属性,GAE 也很乐意这样做。GAE 没有抱怨,因为我(默默地)从正在保存的数据中删除了任何不在 Model.properties() 中的值。
我已经修复了不正确的类型保存并添加了对未保存的额外值的检查(这有助于检查应该发生的 TODO 注释)。保存时我对数据所做的检查基本上是:
这里的帖子很有帮助-谢谢。GAE 按预期工作,现在我按照指示使用它。:)
python - 谷歌应用引擎:PolyModel + SelfReferenceProperty
基于 PolyModel 的类可以用作 SelfReferenceProperty 吗?
我有以下代码:
我执行此代码并通过开发服务器的管理界面检查数据存储。父实例保存到数据存储区 class = 'BaseClass,ParentClass',但子实例未保存。浏览器没有错误输出(调试已打开),我的应用程序的启动器日志中没有任何内容。
这可能吗?
python - 在 appengine 多模型上覆盖 __setitem__ 是否安全?
我正在为谷歌应用引擎制作一个垃圾邮件过滤器库,它使用应用引擎钩子在一些数据put()
进入数据存储区之前对其进行修改。为此,我创建了一个子类化 PolyModel 类的模型,希望可检查的类应该子类化。
但是对于类中的某些数据,我想在值更改时做一些事情,为此我必须覆盖__setitem__
. 但我相信 sdk 使用它来确定模型属性的变化、应用过滤器等,因此更改覆盖__setitem__
可能会破坏这一点。解决这个问题的最佳方法是什么?
python - 如何干净地删除 ndb 属性
在我的应用程序中,我需要删除一些模型属性。
我检查了这个链接,但第一个问题是属性在 a 上polymodel
,我暂时无法切换到 anexpando
来删除属性,我什至不知道如果我将 a 更改polymodel
为 an会发生什么expando
。
那么如何从现有实体中删除属性?
我正在考虑将所有设置StringProperty
为None
然后从模型架构中删除并重新部署。其中一个属性是 a BooleanProperty
,我无法将其设置为None
正确的?!或ndb.PickleProperty
...我应该如何删除它?
有人知道如何正确完成这项工作吗?
python - AppEngine NDB PolyModel 获取属性
我在使用 appengine 时遇到问题,我似乎无法弄清楚:
因此,使用上面的类,当我查询所有 ItemInHouse,然后我尝试访问那些具有 MedicalItem 的 iteminhouse 时,我无法获得 med_sub_type。那是:
在 itm.item.med_sub_type 处引发错误。我什至尝试过:itm.item._values["med_sub_type"].b_val
但这仍然会引发 AttributeError:'Item' 对象没有属性 'med_sub_type'。我确实在class_
它拥有的属性Item
和MedicalItem
属性中看到了,但我无法访问它。有任何想法吗?
谢谢乔恩
python - 如何获取 GAE 多模型的所有类属性(在 Python 中),包括通过 @property 定义的属性
我正在使用 Google App Engine 多模型对可以具有多个属性实例的数据进行建模——例如,一个联系人可以有多个电话号码。说这是我的设置:
(在阅读了这篇关于数据建模的 GAE 文章后,我得到了这种方法:https ://developers.google.com/appengine/articles/modeling )
现在当我这样做时:
我只能访问以下内容:
有什么方法可以访问所有属性,包括那些用“@property”定义的?
非常感谢您对我哪里出错的任何帮助或见解。- 李
更新:基于@FastTurle 的出色回答,我现在添加了一个类方法,它返回类属性以及通过@property 标记为属性的方法:
python - 在 AppEngine 中混合 ndb.Model 和 PolyModel 的多重继承
在我的应用程序中,我们使用一个基本模型来保存通用属性,它是 ndb.Model 的一个简单子类。但是,对于某些功能,能够利用多模型功能非常有帮助。Model 和 PolyModel 都应该支持多重继承,我的问题是,做下面的事情有什么注意事项吗?
目标是使 InternalBase 中的所有基本属性和方法都可用于 Widget 类,而且还能够使用单个查询(这是 PolyModel 添加的)搜索 Widget 的所有子类。
另外,你能想出一个测试用例来暴露这种方案的任何潜在问题吗?
python - ndb.StructuredProperty 不调用 ndb.PolyModel 子类方法
在将 ndb.Polymodel 超类存储为 ndb.StructuredProperty 时,我无法访问子类方法;而是调用超类方法并引发 NotImplementedError。这是我要完成的工作的精简版。
现在假设我保存了一个货件并将 ShippingRecipient 存储到货件的收件人字段中。在数据存储中,货件收件人.class == ['Recipient', 'ShippingRecipient']。当我打电话时:
NotImplementedError 被引发,而不是 PrettyPrinting(...) 的 ShippingRecipient 实现。我希望在访问货件的收件人字段时调用子类方法。有没有办法可以改为使用子类方法?我知道说结构化属性是 Recipient 类型会导致调用超类方法,但是也许我不完全理解为什么他们会将子类存储在接收者.class 属性中。
python - 父类的Python扩展方法
我正在用 Python 编写一个 Google Appengine 应用程序。该应用程序确实通过谷歌云端点消息接收和发送数据。您将在下面找到数据库模型定义的示例。Object 包含所有对象,ObjectBoolean 只是布尔对象,ObjectInteger 只是整数对象。所有的类都定义了两个方法:message_to_model() 和 model_to_message()。
如何重用子类中的方法?我确实想摆脱重复的代码,例如:
这些字段是对象类的一部分。但是在我的代码中,这些字段也列在子类中,这是我想要避免的。我怎样才能做到这一点?我确实已经检查了 super() 函数,但我认为这不适合我的情况,因为我不想执行我想要扩展它的方法。
干杯
-卢卡。