2014-03-02 62 views
1

可以说我有一个窗体有两个字段 - 名称和图像,都是必需的,并且是FormWizard的一部分。 当我将“名称”字段留空但填写“图像”字段(这是一个ImageField并因此呈现给标记)时,表单无效,因此向导不会前进到下一步。 但是 - imagefield现在“失去了”它的价值 - 当我填写名称(这是我看到的唯一错误)并再次提交表单时,表单无效,因为它表示图像丢失。当窗体无效时,django窗体向导不保留request.FILES?

类似的事情发生,如果我填写这两个字段,然后提交 - 表单验证,向导前进到下一个表单,如果我回到向导的一步,名称填写正确,因为我离开它,但ImageField再次失去其价值,我需要重新填充它。

这是正常的行为吗?有没有什么可以做的,所以这不会发生,价值保存?

回答

0

我会张贴这个评论,但我没有声望点。

我的问题是类似的;然而,我正在处理带来自己的一套问题的内联窗体。

这是可能的解决方案,不适合我 - FormWizard and FileFields (Django 1.4)

+0

谢谢!这个想法本身起作用,所以我不会在向导的前后移动过程中“丢失”文件,这是我的原始问题。但是,如果我想将上传的图像显示给用户,我需要一个URL,因此需要额外的解决方法:通过将FILE_UPLOAD_MAX_MEMORY_SIZE设置为0来禁用InMemoryUploadedFile,因此它始终保存到磁盘,并将FILE_UPLOAD_TEMP_DIR更改为一个通过MEDIA_ROOT的已知目录,并通过上下文变量将此路径/ URL传递给模板,以便我可以显示它。 –

+0

是的 - 确实如此。让我的巫师不久前工作,但方式稍有不同。该向导默认将文件上传到由'file_storage'属性设置的临时位置([WizardView.file_storage](https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/# django.contrib.formtools.wizard.views.WizardView.file_storage)),我在自定义的'ImageField'小部件中使用它来向用户显示图像。 – affan