簡體   English   中英

如何在flask-admin中導出具有關系的列

[英]how to export column with relationship in flask-admin

我在向csv導出與其他人關系的表時遇到問題,而在'簡單'工作中則很好。 我要為出口添加一些基礎嗎? 例如,這是db.Model:

class Categoria(db.Model):
    __tablename__ = 'categorie'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    categoria = db.Column(db.String(30), primary_key=True)
    tipo_id = db.Column(db.Integer, db.ForeignKey('tipi.id'), primary_key=True)
    tipo = db.relationship('Tipo', backref='categorie')

這就是ModelView

class CategorieAdmin(sqla.ModelView):
    column_display_pk = True
    can_export = True
    export_types = ['xls']
    list_columns = ['categoria', 'tipo']

生成的錯誤是: Exception: Unexpected data type <class '__main__.Tipo'>

感謝幫助

這個問題已經很老了,但我遇到了同樣的問題,我用column_formatters_export解決了這個問題。

column_formatters_export是一個可以分配給字典的屬性,其中鍵是模型列的名稱,它們的值被分配給一個函數,該函數添加了更改格式或所需內容的功能。

例如,對於您的代碼:

class CategorieAdmin(sqla.ModelView):
   column_display_pk = True
   can_export = True
   export_types = ['xls']
   list_columns = ['categoria', 'tipo']
   column_formatters_export = dict(
       categoria=lambda v, c, m, p: '' if m.tipo is None else m.tipo.categoria 
   )

m你有模型,你可以得到你的模型的任何列。 其他可能的解決方案是將表示方法添加到模型中。

例如:

class Categoria(db.Model):
    __tablename__ = 'categorie'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    categoria = db.Column(db.String(30), primary_key=True)
    tipo_id = db.Column(db.Integer, db.ForeignKey('tipi.id'), primary_key=True)
    tipo = db.relationship('Tipo', backref='categorie')

    def __repr__(self):
       return '%s' % self.categoria



class CategorieAdmin(sqla.ModelView):
      column_display_pk = True
      can_export = True
      export_types = ['xls']
      list_columns = ['categoria', 'tipo']
      column_formatters_export = dict(
           categoria=lambda v, c, m, p: '' if m.tipo is None else str(m.tipo)
      )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM