我如何在 GAE 中创建适用于不同模型 类 的函数?

How can I create functions that work for different Model classes in GAE?

我有多个 类,我有多个 类 可以用更短的方式查询 ndb 的特殊函数,如本例所示:

class SomeModel(ndb.Model):
    xcode = ndb.StringProperty('c')
    descr = ndb.StringProperty('d')
    client = ndb.KeyProperty('cl')
    order = ndb.IntegerProperty('o')
    mod = ndb.DateTimeProperty(auto_now=True)

    @classmethod
    def q_base(cls, ancestor):
        return cls.query(ancestor=ancestor).order(cls.codigo)

函数q_base节省了一些space并使处理程序中的代码看起来更清晰。但是因为有相当多的模型需要这个确切的功能,我不得不重复多次,这是一个问题。

我该如何解决?我可以只创建一个 BaseClass(ndb.Model),在其中添加函数并让所有其他模型继承它吗?或者我必须为此使用 PolyModel 吗?那看起来怎么样?此外,我将不胜感激任何关于任何现有实体会发生什么的见解。

我没有使用 GAE 的经验,但除非他们做了一些非常奇怪的事情,否则规范的解决方案是使用继承自 ndb.Model 的抽象基础 class - 如果 ndb支持抽象模型 classes - 或 mixin:

class QBaseMixin(object):
    @classmethod
    def q_base(cls, ancestor):
        return cls.query(ancestor=ancestor).order(cls.codigo)


class MyModel(ndb.Model, QBaseMixin):
    # model code here