Vous n'êtes pas identifié(e).
Bonjour tout le monde,
J'ai cette classe :
class PatientForm(ModelForm):
dmu_number=forms.CharField( widget=forms.TextInput(attrs={'class':'disabled', 'readonly':'readonly'}))
class Meta:
model = Patient
def nameForm(self):
# for templates
return 'Demographic data'
Je comprends la totalité de ce code sauf ceci :
class Meta:
model = Patient
à quoi ça sert ceci ?
est-ce que model est une variable ou un objet de Django ?
Je retrouve d'ailleurs ce code dans d'autres classes :
class NonOncoAnteriorityForm(ModelForm):
class Meta:
model = NonOncoAnteriority
exclude = ('patient')
Merci d'avance pour votre aide.
beegees
Dernière modification par beegees (02-01-2011 15:58:18)
Hors ligne
Bonjour,
La classe Meta permet de définir des méta-données tels que l'ordre d'alignement par défauts des objets récupérés par une requête,... cf: Annexe B, djangobook-fr.
Dans le cas des formulaires par contre...
Hors ligne
les deux. Ici model est un attribut de la classe Meta, elle même attribut de la classe qui la contient (PatientForm), qui prend pour valeur la classe (l'objet classe) Patient. Il s'agit de lier la classe formulaire a la classe modèle, ce qui permettra la génération automatique des champs (pas regardé, mais sans doute dans ModelForm.__init__()).
Si j'ai un conseil a te donner, c'est de plonger un peu plus profondément dans python, ce genre de choses te paraitra peut être un peu plus clair...
Bon courage.
Le 2 janv. 2011 à 15:46, beegees <ddubois2 _AT_ gmail.com> a écrit :
> Bonjour tout le monde,
>
> J'ai cette classe :
>
>
> class PatientForm(ModelForm):
> dmu_number=forms.CharField(
> widget=forms.TextInput(attrs={'class':'disabled', 'readonly':'readonly'}))
> class Meta:
> model = Patient
>
> def nameForm(self):
> # for templates
> return 'Demographic data'
>
>
> Je comprends la totalité de ce code sauf ceci :
>
>
> class Meta:
> model = Patient
>
>
> à quoi ça sert ceci ?
>
> est-ce que model est une variable ou un objet de Django ?
>
> Merci d'avance pour votre aide.
>
> beegees
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Hors ligne
Hello beegees
ça se précise, tu reprends un code Django ?
model = patient
est une option obligatoire ici parceque tu es sur un ModelForm, un formulaire Django qui dérive ses champs directement du modèle (alors qu'un Form normal doit définir ses champs)
Donc là, tu créée un objet Form (enfin ModelForm ) qui contient tous les champs du modèle Patient
Ensuite reporte-toi à la Doc de Django sur les ModelForm pour voir toutes les options possibles
Là en l'occurence tu as déjà une ligne qui "surclasse" la définition du champ "dmu_number", certainement pour le définir mieux (en fait pour y ajouter des attributs HTML disabled et readonly)
C'est vrai que ça serait le top si toute la doc de Django était traduite (et je me tais parecqu'on va me dire de le faire....)
Hors ligne
Salut Afranck, Jérémie et Quinode,
Un tout grand merci à vous trois pour vos réponses.
Ce que je retiendrai dans vos réponses :
Il s'agit de lier la classe formulaire a la classe modèle
On lie ici le formulaire de type ModelForm donc à un modèle existant ?
permettra la génération automatique des champs
OK
Si j'ai un conseil a te donner, c'est de plonger un peu plus profondément dans python, ce genre de choses te paraitra peut être un peu plus clair...
Si tu connais un bouquin Python qui en parle, file moi le titre, j'irai le chercher demain matin
est une option obligatoire
C'est vraiment obligatoire alors ?
Donc là, tu créée un objet Form (enfin ModelForm ) qui contient tous les champs du modèle Patient
C'est très clair, merci
Ensuite reporte-toi à la Doc de Django sur les ModelForm pour voir toutes les options possibles
Oui, la doc est super bien faite, dommage qu'elle soit en anglais, mais c'est un détail.
Il me semble que ModelForm est utilisé assez souvent, je vais donc analyser la doc.
Merci à tous ceux qui participent activement à ce forum, vous êtes géniaux.
beegees
Dernière modification par beegees (02-01-2011 18:35:46)
Hors ligne