独立于模型名称设置种类名称(App Engine数据存储区)


问题内容

作为Python程序员,我希望代码可以重用,我正努力避免代码中的种类名称冲突(两个不同的模型共享相同的种类名称)。

目前,我只是在模型的类名之前添加了一些有意义的文本,但这绝对不是Python的。

能够显式设置模型的种类将解决我的问题,但是我不知道如何做到这一点,有人知道怎么做吗?


问题答案:

只需重写kind()您的类的方法即可:

class MyModel(db.Model):
  @classmethod
  def kind(cls):
    return 'prefix_%s' % super(MyModel, cls).kind()

您可以定义一个自定义基类来为您执行此操作:

class ModuleModel(db.Model):
  @classmethod
  def kind(cls):
    return '%s_%s' % (cls.__module__, super(ModuleModel, cls).kind())

任何扩展ModuleModel的类都将以其种类名称作为前缀定义的模块名称。