Django - MultiWidget

Table des matières
En parlant de widgets, il faut savoir que ceux-ci sont un pont entre les Code HTML et les champs de Django; Ceux-ci ont beaucoup à voir avec la façon dont nous allons contrôler le comportement du HTML dans nos formulaires et donc dans notre application.
Tel est le contrôle, que nous pouvons appliquer certaines techniques de programmation dans lesquelles nous nous permettrons de stocker et de traiter des données de différents widgets et les donner à Django comme s'il s'agissait de données provenant d'une seule source.
Diviser les données entre plusieurs widgets
L'opération de ceci peut être réalisée en utilisant le méthode render() du widget, alors nous pouvons avoir un champ et lors du traitement, nous le divisons en plusieurs entrées HTML, chacune contenant une partie de la valeur que nous devons stocker.
ExempleUn exemple peut être le champ DateHeure, cela pourrait être divisé en un champ qui capture uniquement la date et un autre qui capture l'heure, mais lorsqu'il est stocké dans Base de données Nous devrions les rejoindre et de cette façon nous avons un champ complet mais dans la partie utilisateur il est divisé.
MultiWidget
Comme l'exemple que nous avons indiqué précédemment, c'est quelque chose d'assez fastidieux car nous aurions à nous occuper d'écrire trop de routines et de méthodes qui nous aident à la validation, en Django Cela a déjà été pensé et nous avons des utilitaires qui font une grande partie de ce travail pour nous.
MultiValueFieldDu côté des champs nous avons MultiValueField qui nous aide dans la validation des données, leur nettoyage et la comparaison avec chacun des champs qui composent le composé; La seule chose que nous avons à faire ici est d'indiquer quels sont les champs qui feront la composition et comment nous devons les compresser pour qu'ils soient utilisables dans le code Python.
Cette méthode est conçue pour fonctionner en conjonction avec MultiWidget qui sera en charge de traduire en HTML tout ce que nous avons préalablement défini dans la classe form.
Voyons ci-dessous une image d'un exemple de code où nous avons implémenté ces concepts :

AGRANDIR

Ici, nous voyons comment nous avons d'abord défini une classe qui hérite de MultiWidget, nous y indiquons que nous allons avoir deux champs Texte de saisie associés et établir un méthode décompresser () qui est celui qui séparera les valeurs pour la présentation.
Dans la classe suivante, nous définissons un peu plus d'éléments, nous lui disons d'abord qu'il doit hériter de MultiValueField alors on indique que widget vous devez utiliser et bien sûr nous allons vous dire d'utiliser le widget déjà défini ci-dessus.
Puis dans son méthode __init__ Nous indiquons les types de champs que cela prendra et enfin nous définissons la méthode compresser (), on voit qu'en dehors du soi il reçoit aussi un paramètre liste_données, en cela nous allons passer la liste des données qui doivent être combinées et les retourner sous forme de tuple, nous profitons également de les valider pour éviter de recevoir des données erronées qui pourraient menacer notre application.
Avec cela, nous terminons ce tutoriel en voyant comment nous avons un outil assez avancé qui nous permet de personnaliser un peu plus nos formulaires dans notre application en quelques étapes simples.Avez-vous aimé et aidé ce tutoriel ?Vous pouvez récompenser l'auteur en appuyant sur ce bouton pour lui donner un point positif

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave