Я сделал групповую загрузку изображений в Django, но он сохраняет измененный размер изображение в папке
/ media
и исходный размер изображение в папке
/ media / group_pics
.
models.py:
class Group(models.Model):
name = models.CharField(max_length=15, unique=True)
date_created = models.DateField(default=timezone.now)
image = models.ImageField(default='group_pics/default-group.jpg', upload_to='group_pics/')
def __str__(self):
return self.name
def image_url(self):
if self.image and hasattr(self.image, 'url'):
return self.image.url
def save(self, *args, **kwargs):
try:
group = Group.objects.get(id=self.id)
if not ('default-group.jpg' in group.image.url) and group.image != self.image:
group.image.delete()
except: pass
if not self.slug:
self.slug = self._get_unique_slug()
super().save(*args, **kwargs)
forms.py
class GroupUpdateForm(ModelForm):
image = forms.ImageField(max_length=150, allow_empty_file=False)
x = forms.FloatField(widget=forms.HiddenInput(), required=False)
y = forms.FloatField(widget=forms.HiddenInput(), required=False)
width = forms.FloatField(widget=forms.HiddenInput(), required=False)
height = forms.FloatField(widget=forms.HiddenInput(), required=False)
class Meta:
model = Group
fields = ['image']
def save(self):
group = super(GroupUpdateForm, self).save(commit=False)
if self.cleaned_data.get('x') != None:
x = self.cleaned_data.get('x')
y = self.cleaned_data.get('y')
w = self.cleaned_data.get('width')
h = self.cleaned_data.get('height')
image = Image.open(group.image)
cropped_image = image.crop((x, y, w+x, h+y))
resized_image = cropped_image.resize((350, 350), Image.ANTIALIAS)
resized_image.save(group.image.path)
group.save()
return group
Когда я делаю
print(group.image.path)
в forms.py в def save():
распечатывает media \ picture.jpg , а должно быть media \ group_pics \ picture.jpg
и views.py
if request.method == 'POST':
update_form = GroupUpdateForm(request.POST, request.FILES, instance=group)
if update_form.is_valid():
update_form.save()
Ожидаемое поведение: Сохраняет только измененный размер изображение в /media/group_pics
папку
Он загружает только на /media/group_pics
, если я использую панель администратора .
Где моя ошибка, которая приводит к двойному сохранению изображения при загрузке изображения через форму?