#flask #peewee #flask-admin
#flask #peewee #flask-admin
Вопрос:
Я не могу отобразить выбранное поле из ссылочной таблицы. Я использую peewee, Flask-admin и Flask-Security.
В представлении Flask-admin отображается значение поля внешнего ключа, но мне нужно другое поле из ссылочной таблицы (электронная почта).
Мои определения модели peewee:
class User(BaseModel, UserMixin):
"""User of my app"""
email = TextField(unique=True)
password = TextField()
class UserDevice(BaseModel):
"""Table with all devices added and owned by users."""
device_uniqueid = CharField(primary_key=True)
device_user = ForeignKeyField(User, null=True, backref='userdevices')
class UserDeviceAdmin(ModelView):
"""Flask-admin view for managing devices"""
column_list = ['device_uniqueid', 'device_user']
column_sortable_list = ('device_uniqueid', ('device_user', User.email))
form_ajax_refs = {'device_user': {'fields': (User.email, 'email')}}
Я получаю это:
проблема с flask-admin
Но мне нужен не идентификатор моего пользователя, а электронная почта … спасибо
Комментарии:
1. Рад, что вы с этим разобрались. Я делал это только в SQLAlchemy, но решение заключается в том, чтобы использовать обратную ссылку в качестве имени столбца, а не переменной в классе модели. Затем вы реализуете
__repr__
внешний класс для отображения того, что вам нравится. Обычно использованиеform_ajax_refs
не требуется.
Ответ №1:
Решение:
class UserDeviceAdmin(ModelView):
"""Flask-admin view for managing devices"""
column_list = ['device_uniqueid', 'device_user.email']
column_sortable_list = ('device_uniqueid', ('device_user', User.email))
form_ajax_refs = {'device_user': {'fields': (User.email, 'email')}}