首页 > 解决方案 > 如何在 Django UpdateView 中使用多个图像获取所有图像

问题描述

当我尝试更新或编辑我的帖子时,我的多个图像无法获取所有保存图像。如果有人可以帮我解决这个问题,我会尝试所有其他解决方案,但没有任何效果。

我已经把 enctype ="multipart/form-data" 和 {{form.media}}

这是我的views.py UpdateView

 class UpdatePostView(LoginRequiredMixin,UserPassesTestMixin,  UpdateView):
        model = Post
        form_class = PostForm
        template_name = "dash/blog/post/edit-post.html"
        def form_valid(self, form):
            form.instance.author = self.request.user
            post = self.get_object()
            # Clear existing images/This is working
            for post_image in Image.objects.filter(post=post):
                post_image.delete()
            images = self.request.FILES.getlist('image')
            print(images)
            for i in images:
                Image.objects.create(post=post, image=i)
            form.save()
            return super().form_valid(form)

这是models.py

class Post(models.Model):
    title = models.CharField(max_length=255)
    content = RichTextField(blank=True,null=True)
    featured_image = models.ImageField(upload_to="blog_picture", default='blog_picture/post.jpg',null=True, blank=True)
    tag = models.CharField(max_length=255)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    category = models.ForeignKey(
        Category, on_delete=models.CASCADE,related_name='categories')
    date_created = models.DateTimeField(auto_now_add=True)
    date_published = models.DateField(blank=True,null=True,verbose_name="Date Published (yyyy-mm-dd)")
    previous_post = models.ForeignKey('self',related_name='previous',on_delete=models.SET_NULL, blank=True, null=True)
    next_post = models.ForeignKey('self',related_name='next',on_delete=models.SET_NULL, blank=True, null=True)
    @property
    def all_categories(self):
        categories = []
        current_category = self.category
        while current_category is not None:
            categories.append(current_category)
            current_category = current_category.parent
        return categories

    def __str__(self):
        return self.title + ' | ' + str(self.author)

    def get_absolute_url(self):
        return reverse('dashboard:post'
        )
class Image(models.Model):
    post = models.ForeignKey(Post, default=None, on_delete=models.CASCADE)
    image = models.FileField(upload_to="blog_picture", default='blog_picture/post.jpg',null=True, blank=True)

    def __str__(self):
        return self.post.title

这是我的 forms.py,我将图像作为多个图像放在我的

class PostForm(forms.ModelForm):
    image = forms.FileField(required=False, widget=forms.FileInput(attrs={
        "class":"form-control",
        "multiple":True
    }))
    class Meta:
        model = Post
        fields = ('title','featured_image','content',
        'category','tag','date_published'
        )

标签: django

解决方案


推荐阅读