2016-09-24 14 views
0

私はDjango 1.10.1を使用しています。Django AdminとImageFieldの寸法制限

ImageFieldを使用したモデルがあり、Django管理サイトで900x900pxより大きいファイルをアップロードしようとするとエラーが発生します。

これを行う最も簡単な方法は何ですか?私はModelクラスでこれを行うことをお勧めします。大きな画像は保存できませんが、データが保存されていない限り画像データにアクセスできないため、どこか読んだことがあります。

答えて

0

ModelAdminクラスのフォームをオーバーライドして、画像の寸法を検証できます。

from django.contrib import admin 
from django import forms 
from django.core.files.images import get_image_dimensions 

from .models import ModelWithImageField 


class ModelWithImageFieldForm(forms.ModelForm): 
    class Meta: 
     model = ModelWithImageField 
     fields = '__all__' 

    def clean_photo(self): 
     photo = self.cleaned_data["photo"] 
     width, height = get_image_dimensions(photo.file) 
     if width < 900 or height < 900: 
      raise form.ValidationError("Improper size.") 
     return photo 


@admin.register(models.ModelWithImageField) 
class ModelWithImageFieldAdmin(admin.ModelAdmin): 
    form = ModelWithImageFieldForm 
関連する問題