使用multiupload在Django中上传多个图像

2024-09-27 21:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经做了一段时间了。我正在尝试建立一个列表站点,在这里用户可以上传多个图片,并且可以上传的图片数量有限,到目前为止this package似乎非常适合我的用例。我确实需要创建一个fork来让它与较新版本的django一起工作,我在def render中的field.py的第23行添加了renderer=None。它修复了错误并允许我查看表单,但在提交时,我得到一个“list”对象没有属性“name”错误。我用this answer来达到这一点。任何帮助都将不胜感激

型号.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')

表单.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

视图.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)

Tags: instancenamepyselfformtruemodelssave

热门问题