2011-04-30 139 views
4

这就是我想要做的事情,到目前为止我在搜索中没有发现类似的东西。 在我的管理页面中,我的模型中有一个Filefield。其余的字段都是只读的。 我希望能够立即上传文件并进行处理,并从中提取信息以分配给这些只读字段。django admin上传的文件处理

我想重写此FileField的clean_(modelfield)方法,并执行此解析并分配其中的东西。但是这不是在文件上传之后立即完成的,对吧?我认为这是在表单/条目被保存时完成的。 接下来,我想添加一个自定义按钮到这个称为'process'的管理表单中,可以在文件上传后点击它。这会触发将值分配给只读字段。 但我无法决定什么是最好的方法来处理文件,并在一页中显示更新的字段,没有太多的修补。

有什么想法?谢谢

回答

1

有两种解决方案,我可以用我有限的知识思考。由于默认情况下文件上传只会在请求发布后才开始,因此需要设计一种替代方法。

1.上传通过一个脚本文件,并处理文件:使用脚本(如:JQuery script)上传的文件,一旦上传完成后,触发脚本(的onComplete事件)呈现值代入读 - 只有领域。一旦FileField被更改,整个过程就可以关联到您的“Process”按钮或时间延迟触发器。

2自定义窗体文件上传:您可以分离文件字段和其他字段(只读字段,你提到的)。如果您仅使用文件上传字段设计自定义表单,并且一旦用户提交请求,则可以在只读字段中呈现具有呈现初始值的其他表单。这样你不需要任何脚本,但你将不得不有两种形式。

希望这会有所帮助。如果您发现任何其他解决方案,请分享:)

+1

感谢您选择康斯坦特。我似乎更喜欢第二个,因为它比外面的东西有更多的Django。实际上会尝试实现类似的东西,看看它是如何实现的。 – gamadeus 2011-05-04 01:26:14

+0

当然,请让我发誓。顺便说一句我认为[表单向导](http://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/)也可以使用。 [Here](http://www.petersanchez.com/2008/09/26/django-formwizard-passing-data-between-forms/)是关于使用表单向导在表单之间传递数据的一些有趣的事情。 只是另一种选择,我现在想过。 – Konstant 2011-05-04 01:44:31

+0

很棒的建议。我甚至找到了一个说明这一点的好网页。 http://elo80ka.wordpress.com/2009/10/28/using-a-formwizard-in-the-django-admin/,因为我想用我的管理页面。在提交之前覆盖管理模板以包括上传文件的处理步骤是另一种选择。 – gamadeus 2011-05-06 21:42:08