Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django中上载多个图像_Django_Django Models_Django Forms_Django Templates - Fatal编程技术网

如何在django中上载多个图像

如何在django中上载多个图像,django,django-models,django-forms,django-templates,Django,Django Models,Django Forms,Django Templates,models.py from django.db import models class Ads(models.Model): business_id = models.CharField(max_length=20, blank=True, null=True) description = models.CharField(max_length=100, blank=True, null=True) image = models.ImageField(upload_t

models.py

from django.db import models

class Ads(models.Model):
    business_id = models.CharField(max_length=20, blank=True, null=True)
    description = models.CharField(max_length=100, blank=True, null=True)
    image = models.ImageField(upload_to='images', blank=True, null=True)
forms.py

from django import forms
from .models import Ads

class AdsForm(forms.Form):

    class Meta:
        model = Ads
        fields = '__all__'
view.py

from .models import Ads
from .forms import AdsForm
from django.core.files.storage import FileSystemStorage 

def ads_view(request):
    if request.method == 'POST':
        form = AdsForm(request.POST, request.FILES)
        if form.is_valid():
            business_id = request.POST.get('business_id')
            description = request.POST.get('description')
            image = request.FILES['image']
            print(business_id)
            print(description)
            print(image)
            file_storage = FileSystemStorage()
            ads_obj = Ads(business_id=business_id, description=description, image=file_storage.save(image.name, image))
            ads_obj.save()
            return redirect('/ads/')
    else:
        form = AdsForm()
        return render(request, 'ads/myads.html', {'form': form})
myads.html

<form action="#" method="post" enctype="multipart/form-data">
    <input type="text" name="business_id" class="form-control form-control" id="colFormLabelSm" placeholder="">
    <textarea name="description" class="form-control" id="exampleFormControlTextarea1" rows="3"></textarea>
    <input type="file" name="image" class="form-control" id="exampleFormControlInput1" multiple>
    <button type="submit" class="btn btn-primary mt-5">Submit</button>
</form>

提交

在这里,我试图上传多个图像,但在视图中,我得到最后选择的一个图像只有一个。如何获取所有图像并保存所有图像。请帮我解决这个问题。

您可以创建一个单独的图像类,使用外键作为Ads,如下所示,并将模板中的图像作为object.image\u set.all()调用,以便添加从Ads模型继承的任意数量的图像

class Ads(models.Model):
    business_id = models.CharField(max_length=20, blank=True, null=True)
    description = models.CharField(max_length=100, blank=True, null=True)

class Image(models.Model):
    ads = models.ForeignKey(Ads, ....)
    image = models.ImageField(upload_to='images', blank=True, null=True)