Django-fr

Forum

#1 03-09-2014 15:55:15

Doline
Membre
Inscription : 06-08-2014
Messages : 22

Votre avis : insertion de champs dans un formulaire

Bonjour à tous,

Dans mon appli j'ai un model avec une vingtaine de champs tous obligatoire.
Je souhaite réaliser un formulaire pour permettre aux visiteurs de renseigner ce model. Cependant un certain nombre de champs seront soit pré-remplis soit modifiés après la fonction save().

Note : il y a de forte chance pour que je soit obligé de customiser la visu du formulaire de A à Z. J'entends par là que je ne pense pas utiliser simplement la balise {{ mon_formulaire }}

Pour faire tout ceci j'ai plusieurs solutions :

Solution 1°)
Dans la classe ModelForm je défini uniquement les champs dont j'ai besoin. J'affiche les champs voulus comme bon me semble. Je récupère le formulaire rempli via save(commit=False), je mets à jours les champs manquant, je relance la fonction save().

Solution 2°)
J'importe tous les champs (fields = __all__). J'affiche les champs voulus comme bon me semble. Je récupère et modifie comme précédemment.

Solution 3°)
J'importe tous les champs et pré-rempli ceux pour lesquels les utilisateurs n'auront pas la main. J'affiche les champs voulus comme bon me semble, je récupère avec la fonction save().


Je pense que les trois solutions se valent... du moins de mon point de vue de débutant en Django... mais les plus expérimentés auront peut-être un autre avis ?


D'avance merci pour vos conseils.



Charlie

Hors ligne

#2 03-09-2014 16:08:25

stopher
Membre
Lieu : Lille
Inscription : 26-09-2011
Messages : 11
Site Web

Re : Votre avis : insertion de champs dans un formulaire

Salut,

perso je travaillerai au niveau du model ( méthode save() ) , pour les
champs dont la valeur va être déduite automatiquement.
Au niveau Form, de ce fait je ne mettrai que les champs obligatoires ou
non et modifiables par l'utilisateur.

Ainsi ton Form ne contient que les champs dont tu as vraiment besoin.

C'est mon avis perso, ce n'est donc pas forcément la meilleure solution wink

Ch.

Le 03/09/2014 16:55, Charlie Gentil a écrit :
>
> Bonjour à tous,
>
> Dans mon appli j'ai un model avec une vingtaine de champs tous
> obligatoire.
>
> Je souhaite réaliser un formulaire pour permettre aux visiteurs de
> renseigner ce model. Cependant un certain nombre de champs seront soit
> pré-remplis soit modifiés après la fonction save().
>
> Note : il y a de forte chance pour que je soit obligé de customiser la
> visu du formulaire de A à Z. J'entends par là que je ne pense pas
> utiliser simplement la balise {{ mon_formulaire }}
>
> Pour faire tout ceci j'ai plusieurs solutions :
>
> Solution 1°)
>
> Dans la classe ModelForm je défini uniquement les champs dont j'ai
> besoin. J'affiche les champs voulus comme bon me semble. Je récupère
> le formulaire rempli via save(commit=False), je mets à jours les
> champs manquant, je relance la fonction save().
>
> Solution 2°)
>
> J'importe tous les champs (fields = __all__). J'affiche les champs
> voulus comme bon me semble. Je récupère et modifie comme précédemment.
>
> Solution 3°)
>
> J'importe tous les champs et pré-rempli ceux pour lesquels les
> utilisateurs n'auront pas la main. J'affiche les champs voulus comme
> bon me semble, je récupère avec la fonction save().
>
> Je pense que les trois solutions se valent... du moins de mon point de
> vue de débutant en Django... mais les plus expérimentés auront
> peut-être un autre avis ?
>
> D'avance merci pour vos conseils.
>
> Charlie
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 03-09-2014 16:14:28

Olivier
Membre
Inscription : 21-07-2016
Messages : 8

Re : Votre avis : insertion de champs dans un formulaire

Bonjour,

techniquement, j'utilise la version ci dessous.Ce, afin que l'essentiel
soit sous le nez de l'utilisateur et ne pollue pas plus l'utilisation de
l'application. Après s'il y a vraiment trop de champs, je passe par un
wizardform sur plusieurs pages

Cordialement

Le 03.09.2014 16:55, Charlie Gentil a écrit :

> Solution 1°)
>
> Dans la classe ModelForm je défini uniquement les champs dont j'ai besoin. J'affiche les champs voulus comme bon me semble. Je récupère le formulaire rempli via save(commit=False), je mets à jours les champs manquant, je relance la fonction save().

Hors ligne

#4 03-09-2014 16:15:41

F. D.V.
Membre
Inscription : 21-07-2016
Messages : 4

Re : Votre avis : insertion de champs dans un formulaire

Ppour qu'un champ ne soit pas dans le formulaire il suffit d'ajouter
l'attribut editable.
Par exemple :

>     dateFin =                           models.DateField(null=True,
> blank=True, editable=False)
>

Ensuite pour calculer la valeur je surcharge save() :

>     def save(self, *args, **kwargs):
>         self.dateFin = self.calcDateFin
>         super(nomdelaclass, self).save( *args, **kwargs)
>




-------------------------------------------
FDV


Le 3 septembre 2014 17:08, christophe de saint leger <christophe _AT_ lindev.fr>
a écrit :

>  Salut,
>
> perso je travaillerai au niveau du model ( méthode save() ) , pour les
> champs dont la valeur va être déduite automatiquement.
> Au niveau Form, de ce fait je ne mettrai que les champs obligatoires ou
> non et modifiables par l'utilisateur.
>
> Ainsi ton Form ne contient que les champs dont tu as vraiment besoin.
>
> C'est mon avis perso, ce n'est donc pas forcément la meilleure solution wink
>
> Ch.
>
> Le 03/09/2014 16:55, Charlie Gentil a écrit :
>
> Bonjour à tous,
>
>
>
> Dans mon appli j'ai un model avec une vingtaine de champs tous obligatoire.
>
> Je souhaite réaliser un formulaire pour permettre aux visiteurs de
> renseigner ce model. Cependant un certain nombre de champs seront soit
> pré-remplis soit modifiés après la fonction save().
>
>
>
> Note : il y a de forte chance pour que je soit obligé de customiser la
> visu du formulaire de A à Z. J'entends par là que je ne pense pas utiliser
> simplement la balise {{ mon_formulaire }}
>
>
>
> Pour faire tout ceci j'ai plusieurs solutions :
>
>
>
> Solution 1°)
>
> Dans la classe ModelForm je défini uniquement les champs dont j'ai besoin.
> J'affiche les champs voulus comme bon me semble. Je récupère le formulaire
> rempli via save(commit=False), je mets à jours les champs manquant, je
> relance la fonction save().
>
>
>
> Solution 2°)
>
> J'importe tous les champs (fields = __all__). J'affiche les champs voulus
> comme bon me semble. Je récupère et modifie comme précédemment.
>
>
>
> Solution 3°)
>
> J'importe tous les champs et pré-rempli ceux pour lesquels les
> utilisateurs n'auront pas la main. J'affiche les champs voulus comme bon me
> semble, je récupère avec la fonction save().
>
>
>
>
>
> Je pense que les trois solutions se valent... du moins de mon point de vue
> de débutant en Django... mais les plus expérimentés auront peut-être un
> autre avis ?
>
>
>
>
>
> D'avance merci pour vos conseils.
>
>
>
>
>
>
>
> Charlie
>
>
> _______________________________________________
> django mailing listdjango _AT_ lists.afpy.orghttp://lists.afpy.org/mailman/listinfo/django
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#5 03-09-2014 16:42:15

Olivier Meunier
Membre
Inscription : 11-08-2010
Messages : 29

Re : Votre avis : insertion de champs dans un formulaire

Le 03/09/2014 16:55, Charlie Gentil a écrit :
> Solution 1°) Dans la classe ModelForm je défini uniquement les champs
> dont j'ai besoin. J'affiche les champs voulus comme bon me semble. Je
> récupère le formulaire rempli via save(commit=False), je mets à jours
> les champs manquant, je relance la fonction save().

fields (dans Meta du ModelForm) est devenu obligatoire en 1.7 si je ne
m'abuse. Et ça reste une bonne pratique de toujours explicitement
définir ce qu'on souhaite mettre dans un formulaire smile

Hors ligne

Pied de page des forums