Django表单保存后不显示图像

时间:2015-09-30 13:40:29

标签: django django-forms inline-formset imagefield

我有一个formset(更具体地说是一个通用的内联formset),其表单有一个ImageField。在解决了几个Django错误之后,一切正常,但是当我用新图像填充空白表单并单击save时,页面在POST请求后刷新并且新图像不是那里。我刚刚保存的表单的其他字段在那里并且已正确填充,但图像URL未显示。数据库记录保存正确,如果我只是刷新页面,图像就会正确显示。但我无法弄清楚如何从POST返回所有新保存的信息,而无需额外刷新页面。

如果它是相关的,对于这个ImageField,我使用的是自定义Storage类,它通过API处理在远程服务器中保存图像。

解决问题的解决方法,但在我看来不应该是必要的:

class ProductImagesView(View):
    ...
    def post(self, request, id):
        product = get_object_or_404(Product.objects.by_id(id))
        image_formset = ProductImageInlineFormset(
            request.POST, request.FILES, instance=product)
        if image_formset.is_valid():
            image_formset.save()

        image_formset = ProductImageInlineFormset(instance=product)  # Workaround
        return render(...)

您可以在另一个问题中找到有关我的代码的更多详细信息:

知道为什么会这样吗?我做错了什么或者这是一个Django错误?感谢。

更新

有一件事我忘了说:保存后显示的formset不仅有新创建的Image对象的空白Image字段,它也没有应该存在的新记录的额外空白表单。它也只会在刷新后出现。

(我将extra=1传递给generic_inlineformset_factory):

ProductImageInlineFormset = generic_inlineformset_factory(
    Image, form=ProductImageForm, extra=1)

0 个答案:

没有答案