Как в flask-admin правильно отсортировать поле со значением foreign key?
У меня есть класс Post, в котором среди прочих полей есть поле с внешним ключем user_id, указывающим на класс User, у которого стоит backref='author' на класс Post. То есть получается при создании экземпляра Post, пользователя я ему добавляю через поле 'author'.
Вот упрощенные версии моих классов:
class Post(SearchableMixin, PaginatedAPIMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.String(140))
timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))
language = db.Column(db.String(5))
class User(UserMixin, PaginatedAPIMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
posts = db.relationship('Post',backref='author', lazy='dynamic')
Сейчас я пытаюсь прикрутить админку к моему проекту. Я хочу в админке сделать сортировку модели Post по значению пользователя, которому оно принадлежит(то-есть чтобы название столбика подсвечивалось синим цветом и при клике по нему мышью можно было бы сортировать значения столбика). Сначала я пробовал сделать это через виртуальное поле 'author' класса Post, в админскую вьюху Post'a я добавлял :
column_list = ['body', 'timestamp', 'language', 'author']
column_sortable_list = ['body', 'timestamp', 'language', 'author']
на что мне сыпалась ошибка что класс Post не имеет свойства 'author', хотя если не добавлять поле 'author' в column_sortable_list то столбик author появляется и там отображаются имена пользователей, но сортировка не работает, тогда я прописал так:
column_list = ['body', 'timestamp', 'language', 'user_id']
column_sortable_list = ['body', 'timestamp', 'language', 'user_id']
сортировка заработала, но теперь вместо имен пользователей отображаются их идентификаторы. И если название столбика я еще смогу поменять с помощью column_labels, то вот заменить идентификаторы на имена я не пойму как, видимо тут нужно делать как-то по-другому только не знаю как. Через column_choices безсмысленно, так как пользователей может быть много, и под каждого писать условие ну такое не очень...
Вот реализация вьюхи Post во flask-admin:
class PostView(ModelView):
form_create_rules = ['body', 'user_id']
can_create = True
can_edit = True
can_delete = True
can_view_details = True
column_list = ['body', 'timestamp', 'language', 'user_id']
column_sortable_list = ['body', 'timestamp', 'language', 'user_id']
form_edit_rules = ['body']
admin.add_view(PostView(Post, db.session)
Подскажите кто знает как правильно это делать.