фляга-админ: преобразуйте поля json - PullRequest
0 голосов
/ 09 марта 2019

Мне очень нравится функциональность CRUD от flask-admin. К сожалению, я еще не нашел способ сделать поля БД json более читабельными.

Поля JSON отображаются в виде списка (а также в режиме редактирования) в виде строк текста.

Кто-нибудь может дать мне какие-нибудь указания, с чего начать, чтобы улучшить вид списка (а затем и вид редактирования)?

1 Ответ

1 голос
/ 15 марта 2019

Вы можете использовать column_formatters , чтобы настроить внешний вид вашего поля в виде списка:

* Формат 1004 *». (Json_value)) Класс MyView (ModelView): column_formatters = { 'my_json_field': json_formatter, }

Или вы можете использовать column_type_formatters , чтобы применить этот стиль ко всем полям словаря в вашем представлении:

* Формат 1011 *». (Json_value)) MY_FORMATTERS = typefmt.BASE_FORMATTERS.copy () MY_FORMATTERS [dict] = json_formatter Класс MyView (ModelView): column_type_formatters = MY_FORMATTERS

Есть несколько других примеров использования форматеров flask_admin при переполнении стека, но не повредит иметь один JSON-специфичный.

flask_admin.form.fields.JSONField можно переопределить, чтобы показывать симпатичные значения на входе. Для него используется атрибут form_overrides :

from flask_admin.contrib.sqla.view import ModelView
from flask_admin.form import fields

class JSONField(fields.JSONField):
    def _value(self):
        if self.raw_data:
            return self.raw_data[0]
        elif self.data:
            return json.dumps(self.data, ensure_ascii=False, indent=2)
        else:
            return ''

class MyModel(BaseModel):
    form_overrides = {
        'my_field': JSONField,
    }
...