Flask-Admin: добавить фильтры по внешним ключам

Я использую Flask-Admin для создания внутреннего интерфейса для своего приложения. Я хочу добавить фильтры в Admin View, но получаю сообщение об ошибке

'Exception: Unsupported filter type column_name'

Где имя столбца — это поле столбца, которое является внешним ключом. Кто-нибудь раньше работал с flask-admin?

вот модели:

class Keywords(Base):
    id = Column(String(4), primary_key=True)
    language = Column(ForeignKey('w_accounts.language'))
    camp_type = Column(ForeignKey('w_camp_types.camp_type'))
class KeywordsAdmin(BaseAdmin):
   column_searchable_list = ('toa_id', 'name', 'toa')
   column_list = ('toa_id', 'language', 'camp_type', 'name', 'aliases', 'toa', 'toa_type')
   column_filters = ('language',) 

Пройдя через API, я также попытался добавить следующий атрибут:

       column_select_related_list = ('language',)

Вместо того, чтобы сразу получить ошибку, я получаю исключение при загрузке страницы в браузере,

"AttributeError: 'ColumnProperty' object has no attribute 'mapper'"

person Francesco Della Vedova    schedule 19.08.2013    source источник


Ответы (1)


Вы должны добавить отношения.

class Keywords(Base):
    id = Column(String(4), primary_key=True)
    language = Column(ForeignKey('w_accounts.language'))
    camp_type = Column(ForeignKey('w_camp_types.camp_type'))

    language_ref = relationship("w_accounts", backref=db.backref('keywords', lazy='dynamic'))

А потом:

column_select_related_list = ('language_ref',)
person swietyy    schedule 31.12.2013