使用multiupload在django中上传多张图片

时间:2019-08-07 01:41:15

标签: python django django-forms django-views django-uploads

我已经为此工作了一段时间。我正在尝试建立一个列表网站,用户可以在其中每个帖子上传多张图片,并且受限于他们可以上传的图片数量,到目前为止,this package似乎是我的最佳选择。我确实必须创建一个fork才能使其与django的较新版本一起使用,在django的def渲染器的field.py第23行中添加了renderer = None。这样可以修复错误,并允许我查看表单,但是在提交时,我得到一个“列表”对象,没有属性“名称”错误。我使用this answer来说明这一点。任何帮助将不胜感激!

models.py

class Listing(models.Model):
     description = mdoels.TextField(blank=True)
     track_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class Photo(models.Model):
    listing = models.ForeignKey(Listing, on_delete=models.CASCADE)
    file=models.FileField(upload_to='images', verbose_name = 'Photos')

forms.py

class ListingForm(forms.ModelForm):
    photos = MultiImageField(min_num=1, max_num=4)
    class Meta:
        model = Listing
        fields = ['description',]
    def save(self, commit=True):
        photos = self.cleaned_data('photos')
        instance = Super(ListingForm, self).save(commit)
        for each in photos:
            Photo.objects.create(file = each, listing = instance)
        return instance

views.py

class AddForm(CreateView):
    model = Listing
    template_name = 'marketplace/listing_create.html'
    form_class = ListingForm
    success_url = 'index'
    def form_valid(self, form):
        instance = form.save(commit = False)
        instance.user = self.request.user
        instance.save()
        return super(AddForm, self).form_valid(form)

0 个答案:

没有答案