独立于模型名称设置种类名称(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的类都将以其种类名称作为前缀定义的模块名称。