Найти - Пользователи
Полная версия: SqlAlchemy изменение поля после маппинга
Начало » Базы данных » SqlAlchemy изменение поля после маппинга
1
iaa
Здравствуйте. Вопрос по SqlAlchemy. Есть миксин для модели, в нем атрибут (declared_attr) parent_id, если делаю так:

@declared_attr
def parent_id(cls):
        return column_property(Column(
            Integer, ForeignKey('%s.id' % cls.__tablename__, ondelete='CASCADE'),
            info={'colanderalchemy': {'title': FB_PARENT, 'widget': SelectWidget(values = cls.form_widget_dump())} }
        ))

***form_widget_dump() - это внутренняя функция, получающая дерево в виде списка кортежей, я получаю ее в запросе, но как я понимаю, мапер на данном не сформирован (я вызываю ее в процессе маппинга), поэтому исключение:

sqlalchemy.exc.InvalidRequestError: SQL expression, column, or mapped entity expected - got ‘<class ’wupy.models.Wupy_menu'>'

Хорошо, делаю через __declare_last__ (вызывается после маппинга, просто):

@declared_attr
    def parent_id(cls):
        return column_property(Column(
            Integer, ForeignKey('%s.id' % cls.__tablename__, ondelete='CASCADE'),
            info={'colanderalchemy': {'title': FB_PARENT} }
       ))

@classmethod
    def __declare_last__(cls):
        super(WupyTreeMixin1, cls).__declare_last__()
        cls.__table__.c.parent_id.__dict__['info']['colanderalchemy']['widget'] = SelectWidget(values = cls.form_widget_dump())

Это работает, но! Если меняется дерево (удаляются, добавляются данные), содержимое SelectWidget остается прежним, помогает только перезапуск приложения…
Подскажите, как быть..
iaa
Никто не знает, не сталкивался?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB