ImageField upload_to不适用于Django更新语句

时间:2019-09-24 05:38:42

标签: django django-models django-forms

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'}))

在提交更新表单时,它将movie_thumbnail保存在media文件夹中,而不是在media / movies_pics中,因此我尝试通过替换

来将其强制保存在movie_pics中
  

movies_thumbnail = request.FILES [“ movies_thumbnail”],

  

movies_thumbnail =“ movies_pics /” + str(request.FILES [“ movies_thumbnail”]),

它可以将图像保存在movie_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)

0 个答案:

没有答案