繁体   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