gpt4 book ai didi

python - 如何在 flask-admin 中导出具有关系的列

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:49 25 4
gpt4 key购买 nike

我在将与其他表有关系的表导出到 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')

这是模型 View

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 中,您拥有模型,您可以获得模型的任何列。其他可能的解决方案是将 representation 方法添加到您的模型。

例如:

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)
)

关于python - 如何在 flask-admin 中导出具有关系的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43271787/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com