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

2024-04-25 12:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有多个类,其中有一些特殊函数,可以用较短的方式查询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)

函数qu base节省了一些空间,使处理程序中的代码看起来更清晰。但由于相当多的模型需要这个精确的函数,我不得不重复多次,这是一个问题。你知道吗

我该怎么解决?我能做一个基类吗(ndb.模型),在那里添加函数并使其他所有模型都继承它?或者我必须使用PolyModel吗?那看起来怎么样?同时,我也希望能对任何现存实体的未来有所了解。你知道吗


Tags: 函数模型basemodel方式orderclassxcode
1条回答
网友
1楼 · 发布于 2024-04-25 12:25:46

我没有GAE方面的经验,但除非他们做了一些非常奇怪的事情,否则规范的解决方案是使用从ndb.Model继承的抽象基类(如果ndb支持抽象模型类),或者使用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

相关问题 更多 >