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
[email protected]
http://lists.afpy.org/mailman/listinfo/django

_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à