导出工作流¶
本文档详细描述了导出数据的工作流程,并提供了可自定义导出流程的钩子。
序列图中以黄色高亮显示的方法表示可被重写的公共方法。
export() 方法从数据库中检索 QuerySet 并将其格式化为 tablib.Dataset。
定义了多种钩子方法,允许您自定义导出数据。
当方法被调用时会发生以下情况:
export()方法接收一个可选的 queryset 参数。kwargs字典可以保存用于创建导出的附加信息,例如从 Admin UI 调用时。调用了
before_export()钩子。如果没有传递
QuerySet,则会调用get_queryset()方法。调用了
filter_export()钩子。你可以重写此方法来修改导出的 queryset。对于
QuerySet中的每个实例,都会调用 :meth:`~import_export.resources.Resource.export_resource`(实例作为参数传入)。对于在
fields中定义的每个字段:export_field()被调用时,字段和实例作为参数传入。如果 dehydrate 方法在
Resource上被定义,那么会调用此方法来提取字段值,否则会为每个已定义的字段调用export(),并将实例作为参数传递。get_value()被调用时传入实例以从中获取导出值。该字段的小部件
render()方法被调用来获取导出值。
每个值都被附加到一个
tablib.Dataset。tablib.Dataset由export()返回。