Peewee и Flask-admin: я не могу отобразить поле из ссылочной таблицы в представлении администратора

#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')}}