English 中文(简体)
如何从上传的文件中提取文本来填充Django模型字段?
原标题:How can I extract text from an uploaded file to populate a Django model field?

我正在编写一个Django应用程序,它需要一个Script对象,该对象可以访问包含脚本和脚本全文的文件。脚本文件是一个xls文件,我从中提取数据或以编程方式向其中写入数据都没有问题(xlrd和朋友们都很棒!),我将其存储在models.FileField中。我想将全文存储在models.TextField中,但我的问题是我不知道如何正确地将工作流组合在一起,以便全文和存储的文件相互镜像。

我想要的工作流:

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

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

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

I have been playing around with the signals framework (presave 和 postsave), but I don t know how to make it, er, save the changes that I am hoping for, since that would require calling save->generating an infinite loop. Also, presave seems to be invoked before the file is uploaded (using a form), which makes my server puke at me.

有什么想法吗?

最佳回答

事实证明,我对这个问题设计过度了。我实际上在寻找的信号是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()

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

问题回答

暂无回答




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签