Vous n'êtes pas identifié(e).
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
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
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
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
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
>
> 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
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
Hors ligne