Отображать встроенную модель на странице сведений родительской модели? Flask, SQLAlchemy

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