Je suis sur le point de démarrer un grand projet Django au travail. Et les principales caractéristiques sont la gestion des formulaires. Il va y avoir beaucoup de formulaires que les utilisateurs de l'application vont utiliser. Et une exigence est qu'il devrait être possible de modifier les formulaires dans l'interface d'administration de l'application.Exigences de formes dynamiques dans Django
En d'autres termes, il n'est pas nécessaire d'ajouter/de supprimer des champs de formulaire. Mais il devrait être possible d'éditer les attributs de champ de formulaire. Par exemple, changez les champs requis et autres.
Tout le monde a de bonnes solutions pour ce faire. Im pensant que je pourrais avoir à sous-classer les champs que je veux être dynamique et faire quelque chose là-bas. Je suppose que tous les champs des modèles doivent avoir "blank = True/null = True" et d'autres comment ajouter des méta-informations dans un modèle séparé (?) Sur le modèle qui déclare que les champs sont obligatoires. Et puis utilisez cette information lorsque les formulaires sont affichés et validés. Avant que je commence à faire ceci je voudrais vraiment une certaine entrée dans la façon de concevoir une telle solution, n'importe qui a eu des idées sur la façon dont cela devrait être fait?
Après plus de recherche, j'ai appris que vous pourriez faire a'lot avec des fonctions d'usine qui retourne le formulaire avec les attributs donnés définis. Donc, il semble que le problème n'est pas si difficile à résoudre.
Je voudrais créer une fonction qui retourne un formulaire avec le bon jeu d'attributs/champs. Mais la partie pour laquelle je n'ai pas trouvé de bonne solution est de savoir comment gérer cela dans l'interface d'administration. Je pense que je ferais un db.Model qui stocke des informations sur d'autres champs de modèles. Où je peux définir ce qui est requis et tel.
Ensuite, dans la fonction qui retourne le formulaire, passez ce modèle et renvoyez un formulaire avec les bons attributs. Mais comment faire ce modèle (qui devrait refléter d'autres champs de modèles) dans le bon sens?
Merci pour la réponse, mais j'ai eu quelques problèmes à comprendre ce que vous dites. Pourriez-vous écrire une description encore plus détaillée de votre solution? Comme je l'ai mentionné dans la dernière partie de la question, j'ai trouvé beaucoup d'informations utiles dans cet article sur b-list.org http://www.b-list.org/weblog/2008/nov/09/dynamic -forms/ On dirait que ça va aider beaucoup. Mais encore faut s'attaquer à la façon de stocker les paramètres de formulaire en DB. – espenhogbakk
Ok, ça me donne beaucoup plus de sens. On dirait une solution qui fonctionnerait. Mais pourrait être fait plus élégamment? Est-il possible de faire une introspection de modèle ou quelque chose qui rende le formulaire FormAttrib et FormSettings? – espenhogbakk
Vous voulez dire forme introspection, non? Oui, cela peut être fait, mais je crois, que c'est un peu trop de décrire ici;) Essayez de lire sur les métaclasses - Je crois que c'est le point, où vous en avez besoin, bien que certains python gourou dit, que dans 99% des cas vous n'en avez pas besoin. Il est préférable de lire le code de ModelForm, qui analyse les modèles pour construire les champs appropriés. Vous aurez besoin de quelque chose de similaire, mais pour Form. Fondamentalement, vous allez le faire autrement et avoir FormModel ;-) – gruszczy