作为一名Python程序员,我喜欢我的代码是可重用的,我试图避免代码中的名称冲突(两个不同的模型共享相同的名称)。
目前我只是将一些有意义的文本添加到模型的类名中,但这非常简单。
能够明确设置模型的类型将解决我的问题,但我无法找到如何做到这一点,有谁知道如何?
答案 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的类都将使用前缀为类名称的模块名称。