Задайте имя вида независимо от названия модели (хранилище данных App Engine) - PullRequest
3 голосов
/ 14 марта 2011

Как программист на Python, мне нравится, что мой код можно использовать повторно, я стараюсь избегать конфликтов имен в моем коде (когда две разные модели имеют одинаковое имя).

В настоящее время я просто добавляю какой-то значимый текст к имени класса модели, но это ужасно непитонично.

Возможность явно установить тип модели решит мою проблему, но я не могу понять, как это сделать, кто-нибудь знает как?

1 Ответ

10 голосов
/ 14 марта 2011

Просто переопределите метод 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, будетиметь имя модуля, в котором он определен, с префиксом имени вида.

...