Как показать поле фактического поля ссылки в Flask-Admin?

В настоящее время я настраиваю Flask-Admin с помощью mongoengine, и при рендеринге столбцов модели, которые являются ReferenceFields, а также встроенными полями, я возвращаю «Объект {ObjectType}» для этих полей.

Например, у меня есть эти модели

class Customer(db.Document):
    name = db.StringField()

class Item(db.EmbeddedDocument):
    name = db.StringField()

class Order(db.DynamicDocument):
    customer = db.ReferenceField('Customer')
    items = db.ListField(db.EmbeddedDocumentField(Item))
    total = db.IntField()

Но когда эта модель визуализируется этим видом:

class OrderView(ModelView):
    column_list = ['id', 'customer', 'total', 'items']

Я возвращаю эту таблицу:

введите здесь описание изображения

Как заставить «Объект клиента» отображаться как что-то полезное, например, Customer.Id или Customer.name, и то же самое для поля Order.items?


person P_equals_NP_2021    schedule 20.04.2020    source источник


Ответы (1)


Я столкнулся с той же проблемой, но в конце концов пришел к решению.

Когда вы определяете класс для своей модели (тот, на который будут ссылаться позже), вы должны переопределить метод str() и запросить строковое представление для этого класса, чтобы оно было любым полем, которое вы хотите .

class Customer(db.Document):
    name = db.StringField()
    def __str__(self):
        return self.name
person D Andrés Ortiz    schedule 23.02.2021