Django导出QuillField字段显示对象地址,如何获取实际文本内容?
解决Django Import Export导出QuillField显示对象地址的问题
问题场景:开发Django博客时使用Quill富文本编辑器的QuillField存储文章内容,通过Django Import Export导出文章到Excel时,body列显示的是<django_quill.fields.FieldQuill object at 0x...>这类对象地址,而非实际文本/HTML内容。
解决方案
需要在PostResource中自定义body字段的处理逻辑,明确提取QuillField中的实际内容:
方法1:使用dehydrate_钩子函数
修改resources.py:
from import_export import resources, fields from .models import Post class PostResource(resources.ModelResource): class Meta: model = Post # 按需指定需要导出的字段 fields = ('id', 'title', 'body', 'created_at') def dehydrate_body(self, obj): # 选择返回纯文本或HTML内容 # 纯文本:return obj.body.get_text() # HTML内容:return obj.body.html return obj.body.get_text()
方法2:直接通过字段属性指定
修改resources.py:
from import_export import resources, fields from .models import Post class PostResource(resources.ModelResource): # 直接通过attribute关联QuillField的内容属性 body = fields.Field(attribute='body__html') # 或者body__get_text获取纯文本 class Meta: model = Post fields = ('id', 'title', 'body', 'created_at')
说明
QuillField内部封装为FieldQuill对象,导出框架默认只会输出对象的字符串表示(即地址)。通过上述两种方式,我们明确告诉导出框架要提取对象中的get_text()(纯文本)或html(富文本HTML代码)属性值,这样导出的body列就会显示实际内容。
内容的提问来源于stack exchange,提问作者mdev
相关产品推荐
相关产品推荐

