Reputation: 14292
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?
Upvotes: 3
Views: 443
Reputation: 101139
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.
Upvotes: 10