ユーザーが画像をアップロードできるDjangoの管理者用設定があります。このシステムでは、JPEG形式の画像しか使用できません。アップロードされたすべての画像がJPEGSであることを確認する検証システムをまとめました。私のイメージモデルでは、私はのためのオーバーライドを持ってクリーン():Django admin:JPEGへの画像のアップロードを制限する
class Image(models.Model):
image = models.ImageField(upload_to="images/", blank=True, null=True, help_text='JPEG images only', max_length=100)
...
def clean(self):
import Image
if "images/" in str(self.image):
i = Image.open("%s/%s" % (settings.MEDIA_ROOT, self.image))
if i.format != "JPEG":
raise validators.ValidationError, u'You can only upload JPEG images'
問題は、それがアップロードされていますし、レコードが再保存されていたら、これが唯一の画像を見つけることです。イメージがメディアフォルダに保存される前に初めてclean()関数が呼び出されます。
レコードが保存される前にファイルが誤った形式でアップロードされている問題を引き起こす可能性のある機能はありますか?ファイルが少なくとも保存されているか、 clean()の実行中の一時ファイルの場所?