设置与模型名称无关的种类名称(App Engine数据存储区)

时间:2011-03-14 15:02:10

标签: python google-app-engine google-cloud-datastore

作为一名Python程序员,我喜欢我的代码是可重用的,我试图避免代码中的名称冲突(两个不同的模型共享相同的名称)。

目前我只是将一些有意义的文本添加到模型的类名中,但这非常简单。

能够明确设置模型的类型将解决我的问题,但我无法找到如何做到这一点,有谁知道如何?

1 个答案:

答案 0 :(得分:10)

只需覆盖班级的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的类都将使用前缀为类名称的模块名称。