Set a kind name independently of the model name (App Engine datastore)

烂漫一生 提交于 2020-01-11 06:32:09

问题


As a Python programmer, I like my code to be reusable, I'm trying to avoid kind name conflicts in my code (where two different models share the same kind name).

Currently I just prepend some meaningful text to the model's class name, but this is awfully unpythonic.

Being able to explicitly set the model's kind will solve my problem, but I can't find out how to do this, does anyone know how?


回答1:


Just override the kind() method of your class:

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

You can define a custom baseclass that does this for you:

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

Any class that extends ModuleModel will have the name of the module it's defined in prefixed to the kind name.



来源:https://stackoverflow.com/questions/5300387/set-a-kind-name-independently-of-the-model-name-app-engine-datastore

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!