2012-08-24 4 views
2

J'ai écrit une petite fonction qui vérifie si le fichier est plus grand qu'une valeur définie ou non. Mais d'une manière ou d'une autre, ça ne marche pas. J'ai mis ma limite de 50 Mo, mais même si essayer de télécharger des données valant 100 Mo, c'est toujours le laisser télécharger. Ce est ma classe forms.py et la fonctionVérification de la taille du fichier Django ne fonctionne pas

from django.template.defaultfilters import filesizeformat 

class ScribbleSaveForm(forms.Form): 
    title=forms.CharField(
     label=u'Title', 
     required=False, 
     widget=forms.TextInput(attrs={'size':120}) 
    ) 
    media=forms.FileField(
     label=u'add file', 
     required=False, 
     widget=forms.FileInput() 
    ) 
    body=forms.CharField(
     label=u'description', 
     widget=forms.Textarea() 
    ) 
    tags=forms.CharField(
     label=u'Tags', 
     required=False, 
     widget=forms.TextInput(attrs={'size':64}) 
    ) 
    def file_size(self): 
      media=self.cleaned_data.get('media',False) 
      if media: 
       if media._size > 50*1024*1024 : 
        raise forms.ValidationError('Please keep filesize under 50MB.') 
       return media 
      else: 
       raise forms.ValidationError('Could not read uploaded file.') 

Répondre

2

Vous êtes sur la bonne voie, vous devez renommer file_size à clean_media. Voir https://docs.djangoproject.com/en/dev/ref/forms/validation/#cleaning-a-specific-field-attribute

De même, assurez-vous de toujours retourner ce que vous êtes en train de nettoyer, validez ou non.

+0

ça a tellement de sens! Je me sens tellement stupide maintenant. Merci beaucoup :) – sankaet

+0

Pas de problème homme, ne vous sentez pas stupide! Content que cela ait aidé – msc

Questions connexes