2017-01-31 21 views
1

У меня есть модель SQLAlchemy с пользовательским типом ChoiceType, который исходит из библиотеки sqlalchemy_utils.Панель администратора администрирования с пользовательским типом столбца в Websauna

class Recipient(Base, BaseMixin): 
    first_name = Column(String()) 
    last_name = Column(String()) 
    social_network = Column(ChoiceType(SOCIAL_NETWOKRS)) 

Где SOCIAL_NETWOKRS является SOCIAL_NETWOKRS = [ ('vk', 'Vkontakte'), ('fb', 'Facebook'), ('youtube', 'Youtube'), ]

я получил следующую ошибку при входе в админку для редактирования моей модели:

NotImplementedError: Not able to derive a colander type from sqlalchemy type: ChoiceType(length=255) Please explicitly provide a colander `typ` for the "social_network" Column.

Как я могу обойти ограничение с сохранением автогенерацией из административная панель?

ответ

1

Я перехожу от sqlalchemy_utils и добавляю прямое подтверждение от колонны.

Следующая сниппет работает, как ожидалось:

class Account(BaseMixin, Base): 
    social_network = Column(String(), info={'colanderalchemy': { 
     'typ': colander.String(), 
     'widget': deform.widget.SelectWidget(values=SOCIAL_NETWOKRS), 
    }}) 
+0

я использовал только Psql перечислений для такого рода случаев использования, так что это может быть, что выбор альтернативы не работает. Но если вы хотите увидеть пример здесь: https://github.com/websauna/websauna.wallet/blob/master/websauna/wallet/models/account.py#L165 –

+0

Также вы можете явно определить дуршлаг. SchemaNode() в списке «ncludes» формы администратора, см. «Adminviews.py» здесь https://websauna.org/docs/narrative/crud/admin.html#edit-view-example –

+0

Это полезно! Спасибо! – Infernion