SQLAlchemy: получить модель из имени таблицы. Насколько я вижу, это может означать добавление какой-либо функции в конструктор метакласса.
Я хочу сделать функцию, которая, учитывая имя таблицы, возвращает модель с этимtablename. Eg:
class Model(Base):
__tablename__ = 'table'
...a bunch of Columns
def getModelFromTableName(tablename):
...something magical
поэтому getModelFromTableName («таблица») должен возвращать класс Model.
Моя цель - использовать эту функцию в простом генераторе форм, который я создаю, поскольку FormAlchemy не работает с python3.2, и я хочу, чтобы он хорошо обрабатывал внешние ключи.
Кто-нибудь может дать мне какие-нибудь советы о том, как заставить getModelFromTableName работать?
Вот одна из идей, которые у меня есть (это может быть совершенно неправильно, я раньше не работал с мета-классами ...)
Что если бы я должен был сделать так, чтобы мои классы Model наследовали от Base, а также от какого-то другого класса (TableReg) и имели мета-класс класса TableReg для хранения Model.tablename в каком-то глобальном словаре или синглтоне.
Я понимаю, что это может быть совсем не так, потому что метакласс Base делает некоторые очень важные и совершенно изящные вещи, которые я не хочу нарушать, но я предполагаю, что у меня должен быть способ добавить немного кода конструктора к мета класс моих моделей. Или я не понимаю.