Python Django:用于向上载的图像添加标题的表单集

Python Django:用于向上载的图像添加标题的表单集,python,django,image,django-forms,Python,Django,Image,Django Forms,我正在使用Django,并且正在尝试实现一个我认为在图像上传中相当常见的功能。我想生成一个formset(可能是modelformset?),为用户刚刚上传的每个图像添加标题(类似于“查看刚刚上传的图像”页面) 这是基本思想: 我有一个简单的表单,可以一次提交一个或多个图像: class UploadImageForm(forms.Form): images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multipl

我正在使用Django,并且正在尝试实现一个我认为在图像上传中相当常见的功能。我想生成一个
formset
(可能是
modelformset
?),为用户刚刚上传的每个图像添加标题(类似于“查看刚刚上传的图像”页面)

这是基本思想:

我有一个简单的表单,可以一次提交一个或多个图像:

class UploadImageForm(forms.Form):
    images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 'multiple'}))
它产生了以下结果:

然后,在视图中,我对帖子中的每个图像进行一些处理,并将图像的大小调整版本存储为模型的实例,称为
ImageItem

class ImageItem(models.Model):
    resized_img = models.ImageField(upload_to=img_get_file_path)
    user = models.ForeignKey(User)
    upload_date = models.DateTimeField(auto_now_add=True)
    last_modified = models.DateTimeField(auto_now=True)      
    caption = models.CharField(max_length=1000,
                               blank=True)
(这里是
UploadImage
视图,供参考…注意,一旦表单被验证并且图像已保存在handle\u uploaded\u image函数中,它就会重定向到一个视图,以便为所有图像添加标题。)


好了,现在是我需要帮助的部分

图像保存后,我希望下一个视图为上传的每个图像生成一个表单,以便用户可以向图像添加标题。将所有信息添加到所有新图像后,点击
submit
,每个标题都保存到相应的ImageItem实例中。我不知道应该创建多少表单,这取决于用户上传了多少图像。下面是我希望表单集执行的操作的可视化表示(忽略其他内容,我们可以继续使用简单的标题作为示例):


具体来说,这是我需要帮助的东西:

  • 我不知道如何根据用户刚刚上传的图像数量提供适当数量的
    CaptionForm
    s
  • 我不知道如何将适当的
    ImageItem.resized\u img
    放置在模板中引用的表单左侧
  • 我不知道如何确保提交
    CaptionForm
    s后,我将标题保存到相应的
    ImageItem
    实例中
我想这三点都可以在一个
formset
modelformset
解决方案中解决



正如我所说,这似乎是一种非常普遍的情况。如果有人知道任何现有的代码,请让我知道。谢谢

我认为您需要使用和访问模板中调整大小的图像
{{form.instance.resized\u img}

您可能需要查看表单向导。@ThomasOrozco谢谢,现在查看它们。。。他们是否允许我从向导的第二页查询发布在向导第一页上的调整大小的图像?还是所有的巫师表格都必须在最后贴出来?恐怕我对它们还不够熟悉,不能告诉你这些。我只是把它放在那里,因为多步骤流程通常是向导的工作!:)
def UploadImageToLibrary(request):
    if request.method == 'POST':
        form = UploadImageForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_image(form) # creates new sizes of images, saves resized version as ImageItem instances
            return AddInfoForImage(request) # SEND USER TO A PAGE FOR ADDING CAPTIONS TO EACH IMAGE...not sure what this next view should contain...?
    else:
        form = UploadImageForm()
    return render_to_response('upload_item.html', {'form': form}, context_instance=RequestContext(request))