django - 如何在 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'
)