Django模型使用图像大小调整功能保存了两次
我尝试在上传之前使用以下代码调整图像大小。但是,当我应用自定义Django模型使用图像大小调整功能保存了两次,django,Django,我尝试在上传之前使用以下代码调整图像大小。但是,当我应用自定义def save(self,*args,**kwargs):函数时,在提交表单后,我得到了两个保存的模型。为什么呢 class Players(models.Model): super().save(*args, **kwargs) author = models.ForeignKey(User, null=True, on_delete=models.CASCADE) player_img = models
def save(self,*args,**kwargs):
函数时,在提交表单后,我得到了两个保存的模型。为什么呢
class Players(models.Model):
super().save(*args, **kwargs)
author = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
player_img = models.ImageField(upload_to='profile_pics', default="default.jpg", null=True, blank=True)
def save(self, *args, **kwargs):
img_read = storage.open(self.player_img.name, 'rb')
img = Image.open(img_read)
if img.height > 300 or img.width > 300:
output_size = (300, 300)
img.thumbnail(output_size)
in_mem_file = io.BytesIO()
img.convert('RGB').save(in_mem_file, format='JPEG')
img.save(in_mem_file, format='JPEG')
img_write = storage.open(self.player_img.name, 'w+')
img_write.write(in_mem_file.getvalue())
img_write.close()
img_read.close()
Views.py
class player_add(LoginRequiredMixin, CreateView):
model = Players
template_name = 'player_create.html'
form_class = forms.PlayerForm
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
super().save(*args,**kwargs)
应该是def save(self,*args,**kwargs)
方法中的最后一行代码,而不是现在的位置。等等,为什么要在模型类的顶部编写super().save(*args,**kwargs)
?