如何从上载的文件中提取文本来填充Django模型字段?

2024-05-20 12:11:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个Django应用程序,它需要一个脚本对象,该对象既可以访问包含脚本的文件,也可以访问脚本的全文。脚本文件是XLS文件,从程序中提取数据或编写数据到它(太好了!),我把它储存在模型.FileField. 我想把全文存储在模型.TextField,但我的问题是,我不知道如何将工作流正确地组合在一起,以便全文和存储的文件相互镜像。在

我想要的工作流:

脚本对象已创建->;文件上载到文件字段->;从文件中提取的文本保存到全文字段

以及

脚本全文编辑->;在“文件”字段中写回文件的文本->;脚本已保存

以及

脚本文件替换为新文件->;从文件中提取的文本保存到全文字段

我一直在研究signals框架(presave和postsave),但我不知道如何使其保存我希望的更改,因为这需要调用save->;生成无限循环。另外,presave似乎是在文件上传之前调用的(使用表单),这让我的服务器对我吐口水。在

有什么想法吗?在


Tags: 文件数据对象django模型文本gt程序
1条回答
网友
1楼 · 发布于 2024-05-20 12:11:15

结果发现我对这个问题做得太多了。我实际上在寻找的信号是post_init,我写的函数实际上就是

@receiver(post_save, sender=Script)
def retrieve_fulltext(sender, **kwargs):
    script = kwargs['instance']
    s = open(script.script.path)
    text = s.read()

    if script.fulltext == text:
        return else: script.fulltext = text
        script.save()

当然,这仍然需要更多的工作来处理全文中的更改,从而触发对文件的写入。抱歉,所以,问了个愚蠢的问题。我希望这个答案至少对其他人有用。在

相关问题 更多 >