Django-fr

Forum

#1 02-01-2011 15:46:39

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Class META

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

#2 02-01-2011 16:26:53

afranck64
Membre
Inscription : 30-12-2010
Messages : 20

Re : Class META

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

#3 02-01-2011 17:15:48

Jérémie Ducastel
Membre
Inscription : 11-08-2010
Messages : 16

Re : Class META

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

#4 02-01-2011 17:23:21

quinode
Membre
Lieu : Auvergne
Inscription : 14-10-2010
Messages : 89
Site Web

Re : Class META

Hello beegees

ça se précise, tu reprends un code Django ? wink
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

#5 02-01-2011 18:35:13

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Class META

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

Pied de page des forums