ImageField upload_to не работает с операторами обновления django - PullRequest
0 голосов
/ 24 сентября 2019

models.py

class Movies_list(models.Model):    movies_thumbnail=models.ImageField(default='thumbnail.jpg',upload_to='movies_pics')

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)
        img=Image.open(self.movies_thumbnail.path)
        if img.height > 100 or img.width > 100:
            output_size = (200,300)
            image_movies=img.resize(output_size,resample=Image.ANTIALIAS)
            image_movies.save(self.movies_thumbnail.path)

settings.py

STATIC_URL = '/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

views.py

form=Update_Movies_form(
            data=(request.POST or None),
            files=(request.FILES or None),
            # instance=obj
        )
    form.fields["movies_thumbnail"].initial = obj.movies_thumbnail
    movies_detail=Movies_list.objects.filter(movies_id=movies_id)
    print(movies_detail)
    url=url_filter(request,movies_id)
    if form.is_valid():
        if request.user.is_staff:
            obj_movies_update=Movies_list.objects.filter(movies_id=movies_id).update(
                movies_thumbnail=request.FILES["movies_thumbnail"],

forms.py

class Create_Movies_form(forms.Form):
    movies_thumbnail=forms.ImageField(widget=forms.ClearableFileInput(attrs={'placeholder': 'thumbnail'}))

при отправке формы обновления он сохраняет videos_thumbnail в папке media, а не в media / movies_pics, поэтому я пытаюсь принудительно сохранить его в movies_pics с помощьюзамена

movies_thumbnail = request.FILES ["movies_thumbnail"],

на

movies_thumbnail = "movies_pics /" + str (запрос.FILES ["movies_thumbnail"]),

Сохраняет изображение в movies_pic и работает просто отлично, но не обрезает изображение, как указано в models.py

def save(self,*args,**kwargs):
    super().save(*args,**kwargs)
    img=Image.open(self.movies_thumbnail.path)
    if img.height > 100 or img.width > 100:
        output_size = (200,300)
        image_movies=img.resize(output_size,resample=Image.ANTIALIAS)
        image_movies.save(self.movies_thumbnail.path)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...