使用Django通过单个文件上传字段将多张图片上传到新闻中

时间:2019-05-09 08:23:11

标签: django django-models django-views

我正在尝试将多个图像上传到新闻模块

我有这样的模型:

class News(models.Model):
    title = models.CharField(max_length=255,null=True, verbose_name ='Title')
    date = models.DateField(max_length=255,null=True, verbose_name ='Date')

class NewsImages(models.Model):

    news = models.ForeignKey(News, related_name='newsimages',on_delete=models.CASCADE)
    file_name = models.ImageField(upload_to='news/', max_length=255, null=True, verbose_name ='Image')

我有这样的表格:

class NewsAddForm(forms.ModelForm):
    class Meta:
        model = News
        fields = ['title', 'date']


class NewsImagesAddForm(forms.ModelForm):
    file_name = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True, 'required' : False}))
    class Meta:
        model = NewsImages
        fields = ['file_name']

我的查看文件是:

form_class = NewsAddForm
        imgform_class = NewsImagesAddForm
        if request.method=="POST":
            form = form_class(request.POST, request.FILES)
            if form.is_valid():
                new = form.save(commit = False)
                new.save()  

                imgform = imgform_class(request.POST, request.FILES)
                imgform.save(commit = False)
                for img in imgform:
                    img.news = new  
                    img.save()  

                messages.success(request, 'news added successfully')
                return redirect('listnews')
        else:
            form = form_class()
            imgform = imgform_class()
        context = {'form' : form, 'imgform' : imgform}
        return render(request, 'news/add.html', context)

所以你能帮我在这里做错了吗

0 个答案:

没有答案