#flask #sqlalchemy #flask-sqlalchemy #flask-wtforms #flask-admin
#flask #sqlalchemy #flask-sqlalchemy #flask-wtforms #flask-администратор
Вопрос:
У меня есть модель A, которая включает встроенную модель B, которая позволяет пользователям вводить некоторые тексты. В настоящее время данные, добавленные пользователями во встроенную модель, могут отображаться только на странице «редактирование» родительской модели A, но не на странице «сведения». Есть ли способ решить эту проблему?
редактировать-страница
Ответ №1:
Добавьте поле в model B в column_details_list
(docs)
Добавьте то же поле в модели B в column_formatters_detail
словарь (docs), указав метод форматирования, который возвращает соответствующий HTML.
Например:
from markupsafe import Markup
class ExampleView(AdminView):
# include the comments child field plus any parent fields from model A you want to show
column_details_list = ('name', 'last_name', 'comments')
def _comments_formatter(view, context, model, name):
# model is parent model A
_html = []
if model.comments:
# return any valid HTML markup
for _comment_model in model.comments:
# add html para per comment
_html.append(f'<p>User:{str(_comment_model.user)}, Comment:{_comment_model.comment}</p>')
return Markup(''.join(_html))
column_formatters_detail = {
'comments': _comments_formatter
}