2015-06-29 3 views
0

Я пытаюсь проверить изображение в администраторе django с помощью проверки формы.django admin custom form validation

models.py

class website_index(models.Model): 
    screenshot=models.ImageField(storage=AzureStorage(container="media"),upload_to='search/resources/screenshots/',blank=True,null=True) 

admin.py

class CustomIndexModelForm(forms.ModelForm): 
    class Meta: 
     model = website_index 
     fields = '__all__' 

    def clean_image(self): 
     screenshot = self.cleaned_data.get['screenshot'] 
     if screenshot:  
      w, h = get_image_dimensions(screenshot) 
      if w!=h : 
       raise forms.ValidationError('Upload a square image') 
     return screenshot 

    def __init__(self, *args, **kwargs): 
     super(CustomIndexModelForm, self).__init__(*args, **kwargs) 
     self.fields['parent_id'].queryset = cat_tree.objects.exclude(level=0) 

class website_index_Admin(admin.ModelAdmin): 
    form = CustomIndexModelForm 

Я видел другие ответы, и я обеспечить эти точки, до сих пор Джанго не поднимая какую-либо ошибку Validation, когда я загрузить изображение, нарушающие правила проверки.

+2

Вы не очищаете скриншот поля, попробуйте def clean_screenshot - https://docs.djangoproject.com/en/1.8/ref/forms/validation/#cleaning-a-specific-field-attribute – JamesO

ответ

5

Название поля скриншот. clean_image никогда не будет выполнен. Вам нужно изменить имя метода на clean_screenshot.