2011-07-18 3 views
1

J'ai un modèle, et 3 formes différentes qui utilisent ce modèle (bien sûr, chaque formulaire a des champs différents de ce modèle). J'ai écrit plusieurs fonction propre pour valider le remplissage de formulaire ... Mais, je ne veux vraiment pas copier et passer cette validation à tous les formulaires.Django - Données de Nettoyage Communes

Est-il possible d'avoir une classe de nettoyage commune? Comment puis-je l'appeler?

Voici le code actuel:

models.py

class UserProfile(models.Model):  

    user = models.ForeignKey(User, unique=True) 

    cpf = models.CharField('CPF', max_length=14, blank=True) 
    cnpj = models.CharField('CNPJ', max_length=18, blank=True) 

...

forms.py

class yyyyyForm(UserCreationForm): 
      ... 
      def Meta: 
       ... 
      def Save: 
       ... 
      def clean_cpf(self): 
       ... 

class xxxxxForm(UserCreationForm): 
    ... 
    def Meta: 
     ... 
    def Save: 
     ... 
    def clean_cpf(self): 
     ... 

Répondre

3

Pourquoi avez-vous pas une classe BaseForm où vous mettez la méthode clean_cpf(), puis étendez cela pour les autres formulaires, et puisque clean_cpf est dans le formulaire parent , vous ne devriez pas avoir à l'implémenter dans les classes enfants. Dans votre exemple, il semble que vous ayez une classe de base appelée UserCreationForm si c'est votre formulaire que vous pouvez modifier, vous pouvez y mettre votre propre méthode.

+0

Merci, c'est sûr que c'est la meilleure idée. J'ai un exemple de http://djangosnippets.org/snippets/1228/ mais votre idée est bien meilleure. – Thomas

Questions connexes