2010-11-10 7 views
2

Y at-il un moyen de django pour valider un formulaire basé sur plusieurs champs. J'ai vu quelques exemples où les gens recommandent de surcharger la méthode de nettoyage d'un formulaire et de déclencher une erreur de validation si elle ne répond pas à votre validation personnalisée. Le problème pour moi est que je ne suis pas sûr que vous pouvez vérifier si un fichier a été téléchargé à partir de la méthode propre. Je n'ai pu y accéder qu'en utilisant les objets request et vous n'avez pas accès à l'objet request dans la méthode clean du formulaire.Django valider formulaire basé sur plusieurs champs (champs de fichier)

Répondre

3

La méthode que vous avez décrite (relèvement ValidationError de Form.clean) est la façon officielle de faire multi-field validation.

Vous pouvez accéder aux fichiers importés depuis self.files au sein de la méthode clean. De django/forms/forms.py:

class BaseForm(StrAndUnicode): 
    # This is the main implementation of all the Form logic. Note that this 
    # class is different than Form. See the comments by the Form class for more 
    # information. Any improvements to the form API should be made to *this* 
    # class, not to the Form class. 
    def __init__(self, data=None, files=None, ...): 
     self.is_bound = data is not None or files is not None 
     self.data = data or {} 
     self.files = files or {} 
     ... 
Questions connexes