【问题标题】:Set a kind name independently of the model name (App Engine datastore)设置独立于模型名称的种类名称(App Engine 数据存储区)
【发布时间】:2011-03-14 15:02:09
【问题描述】:

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

目前我只是在模型的类名前面加上一些有意义的文本,但这非常不符合 Python 风格。

能够显式设置模型的种类将解决我的问题,但我不知道该怎么做,有人知道吗?

【问题讨论】:

  • 你能发布一两个你所说的冲突的例子吗?你怎么会遇到具有相同类名的模型?

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


【解决方案1】:

只需覆盖类的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 的类都将其定义的模块的名称作为种类名称的前缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多