2016-09-24 103 views
0

我正在使用Django 1.10.1。Django Admin和ImageField尺寸限制

我有一個ImageField模型,並且當有人試圖在Django Admin站點上傳一個大於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