0

元のファイルを webp バージョンに変換されたものに置き換えるには、models.pyで次のことを行いました。

django==2.2.17
django-filer==2.0.2
Pillow==8.0.0


class Provaa(File):
    data = models.DateTimeField(auto_now=True,)

    class Meta:
        managed = True
        verbose_name = 'Allegato'

    def convert_to_webp(self):
        extension = ['jpeg', 'png', 'jpg', 'img']
        if any(ext in self.file.name.lower() for ext in extension):
            try:
                img = Image.open(self.file)
                correggi_nome = self.file.name.split('.')[0]
                img.save(correggi_nome + '.webp','webp')
                logger.error('img.save save another copy of the file not repalce the original!')

            except Exception as ex:
                logger.error(ex)


    def save(self, *args, **kwargs):
        self.convert_to_webp()
        super(Provaa, self).save()

これはwebpファイルを正しく保存しますが、元のファイルを置き換えずに現在のプロジェクトフォルダーに保存します。

ipdb> type(self.file.file)
<class 'django.core.files.uploadedfile.InMemoryUploadedFile'>
ipdb> type(self.file)
<class 'filer.fields.multistorage_file.MultiStorageFieldFile'>
ipdb> type(img)
<class 'PIL.PngImagePlugin.PngImageFile'>

self.file を img に置き換えようとしましたが、失敗します。元のファイルを保持する必要はなく、変換されたファイルのみを保持する必要があります。

4

1 に答える 1