【发布时间】:2020-02-06 19:48:28
【问题描述】:
有没有办法用同一个上传按钮上传多张照片?我知道有一个额外的小部件,您可以将一定数量的图像添加到modelformset_factory,但我正在寻找一种方法让用户决定要上传多少张照片。如果我将extra=3 添加到表单集中,一切正常。但我想完全消除它。有些用户想上传 3 张图片,有些用户可能想上传 25 张。
我的看法
def list_home(request):
image_form_set = modelformset_factory(Images, form=ImageForm)
if request.method == "POST":
listing_form = ListingForm(request.POST)
formset = image_form_set(request.POST, request.FILES, queryset=Images.objects.none())
if listing_form.is_valid() and formset.is_valid():
post = listing_form.save(commit=False)
post.user = request.user
post.save()
for form in formset.cleaned_data:
if form:
image = form['image']
photo = Images(listing=post, image=image)
photo.save()
return render(request, 'success.html')
我的表格
类ListingForm(forms.ModelForm):
class Meta:
model = Listing
exclude = ('user', 'longitude', 'latitude', 'pub_date')
class ImageForm(forms.ModelForm):
image = forms.ImageField(label='Image', widget=ClearableFileInput(attrs={'multiple': True}))
class Meta:
model = Images
fields = ['image']
我的图像模型
class Images(models.Model):
image = models.ImageField(upload_to=get_image_filename, verbose_name='Image')
listing = models.ForeignKey(Listing, on_delete=models.CASCADE)
def __str__(self):
return str(self.image)
【问题讨论】:
-
这个答案就是你要找的:stackoverflow.com/a/6142749/4690525
标签: django django-models django-forms django-views