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

Noa*_*ith 3 python google-app-engine google-cloud-datastore

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

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

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

Nic*_*son 10

只需覆盖kind()您的类的方法:

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

您可以定义为您执行此操作的自定义基类:

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

任何扩展ModuleModel的类都将具有它所定义的模块的名称,并以类名称为前缀.