gpt4 book ai didi

python - Django:用于为上传的图像添加标题的表单集

转载 作者:太空宇宙 更新时间:2023-11-03 11:54:45 26 4
gpt4 key购买 nike

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

这是基本思想:

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

class UploadImageForm(forms.Form):
images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': 'multiple'}))

它产生这个:

enter image description here

然后,在 View 中,我对来自 POST 的每个图像进行一些处理/处理,并将图像的调整大小版本存储为模型实例,称为 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 View ,仅供引用...请注意,一旦表单通过验证并且图像已保存在 handle_uploaded_image 函数中,它重定向到为所有图像添加标题的 View 。)

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))

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

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

enter image description here


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

  • 我不知道如何根据用户刚刚上传的图片数量提供适当数量的 CaptionForm
  • 我不知道如何将适当的 ImageItem.resized_img 放在它在模板中引用的表单的左侧。
  • 我不知道如何确保在提交 CaptionForm 后,我将标题保存到适当的 ImageItem 实例。

我想这三点都可以在一个 formsetmodelformset 解决方案中以某种方式解决?


正如我所说,这似乎是一种非常普遍的情况。如果有人知道执行此操作的任何现有代码,请告诉我。谢谢!

最佳答案

我认为你需要使用 model formsets并在模板 {{ form.instance.resized_img }}

中访问调整大小的图像

关于python - Django:用于为上传的图像添加标题的表单集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14364431/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com