Bonjour,
En préambule, je débute dans l'utilisation de Django et de Python.
Mon problème est le suivant :
Je souhaite vérifier le contenu de 2 champs. Pour cela, j'ai rédigé un
ModelForm avec deux RegexField.
Puis j'ai écrit deux méthodes clean pour mes champs. Ca fonctionne comme
je veux.
Mais je me rends compte que mes méthodes sont presque identiques. Donc
DRY, j'ai essayé de créer une fonction plus généraliste que
j'utiliserai ensuite dans les clean. Et ça ne fonctionne pas.
Pourriez-vous m'apporter vos lumières et si nécessaire me rediriger vers
de la documentation pour m'améliorer ?
Merci d'avance pour votre aide.
[code]
from django.db import models
from django import forms
from django.forms import ModelForm
from django.core.exceptions import ValidationError
class Product(models.Model):
name_product = models.CharField(max_length=300)
ce_number = models.CharField(max_length=9)
cas_number = models.CharField(max_length=12)
class ProductForm(forms.ModelForm):
ce_number = forms.RegexField(regex=r'[0-9]{3}-[0-9]{3}-[0-9]{1}')
cas_number = forms.RegexField(regex=r'[0-9]{3-7}-[0-9]{2}-[0-9]{1}')
def check_number(c_number, modulo_n, reverse = False)
"""Function to validate a CAS or CE number"""
c_number = self.cleaned_data['c_number']
#je fais mes transformations et calculs
if reverse == True:
c_number_rest = ....%modulo_n
else:
c_number_rest = ....%modulo_n
if c_number_rest != c_number_control
raise forms.ValidationError("It's not a correct number.")
return c_number
def clean_ce_number(self):
"""Function to validate specifically CE number"""
self.check_number(ce_number,11)
def clean_cas_number(self):
"""Function to validate specifically CAS number"""
self.check_number(cas_number,10,True)
[/code]
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django