如何一次输入一次提交3张图像。
class Image(models.Model):
imageuploader_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True, blank=True)
image = models.FileField(upload_to ='pictsagram/')
答案 0 :(得分:1)
我认为这不太复杂。您只需要一个带有文件输入的表单,该文件具有多属性,然后将所有文件保存在视图中。
例如一个非常基本的例子
#forms.py
class ImageForm(forms.Form):
images = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
您的html表单
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form }}
<button type="submit">Upload</button>
</form>
然后使用字段上的getlist
在视图中创建图像
# views.py
def images_upload(request):
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
for img in request.FILES.getlist('images'):
Image.objects.create(imageuploader_profile=request.user, image=img)
return redirect('images_upload')
form = ImageForm()
context = {'form': form}
return render(request, 'images.html', context)
答案 1 :(得分:0)
因此,我认为这是您需要利用ManyToMany
关系字段,创建一个新的model
实例来存储一个图像的实例,例如,(这很简单)版本,例如您需要的版本。
from django.db import models
class ImageAttachment(models.Model):
file = models.FileField(upload_to ='pictsagram/')
然后,在您的图片模型中:
class Image(models.Model):
imageuploader_profile = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, null=True, blank=True)
images = models.ManyToManyField(ImageAttachment)
然后,用户会将X张图像传递给服务器,此时您将创建多个图像,并将它们附加到Image
模型的图像字段中。
随着代码组织的发展,我还将考虑重命名您的Image
模型,因为它实际上存储着多个图像...