Option "Désactivée" pour choiceField - Django
J'ai de la difficulté avec une question simple :
Comment avoir une certaine "désactivé" dans un menu déroulant généré par l'intermédiaire d'un modelForm et choiceFied dans le Framework django ?
Pour le moment, je ne peux pas comprendre comment obtenir un tel résultat :
-- Root 1 entrée -- (désactivé)
-- Elt 1 -- (pas désactivé)
-- (Racine de 2) -- (désactivé)
Avez-vous des conseils ?
Pierre
source d'informationauteur Pierre
Vous devez vous connecter pour publier un commentaire.
Django forme de widgets offrent un moyen de passer d'une liste d'attributs qui doivent être rendus sur la
<option>
tag:Malheureusement, cela ne fonctionne pas pour vous parce que l'attribut sera appliqué à CHAQUE option de la balise qui est rendu. Django n'a aucun moyen de savoir automatiquement qui doit être activé et qui devrait être désactivé.
Dans votre cas, je vous recommande la rédaction d'un widget personnalisé. Il est assez facile à faire, et vous n'avez pas beaucoup d'une logique personnalisée à appliquer. Les docs sur ce sont ici. En bref:
forms.Select
qui est la valeur par défaut, sélectionnez moteur de rendurender(self, name, value, attrs)
méthode. Utilisez votre logique personnalisée pour déterminer si levalue
se qualifie en tant que besoin d'être désactivé. Jetez un oeil à la très court de mise en œuvre derender
dansdjango/forms/widgets.py
si vous avez besoin d'inspriation.Ensuite, définir votre champ de formulaire à utiliser votre widget personnalisé:
Vous pouvez créer des Choix, comme mentionné par Bryan comme ça. Dans les options ci-dessous Racine 1, Racine de 2) sont automatiquement désactivés et ils ressemblent à des Options de Groupe
L'option ci-dessus affiche comme ceci. Dans l'image ci-dessous, Racine 1 et Racine de 2) ne sont pas sélectionnables.
Espère que cela va effacer votre problème
-Vikram
Il semble django 1.1 permettra "de " optgroup"": Documentation de Django
Cela à mon humble avis est un must.
Êtes-vous essayer de créer un menu dans lequel les éléments de la liste sont séparés en catégories, et vous ne voulez pas les catégories elles-mêmes pour être sélectionnable?
Si oui, vous pouvez y parvenir en demandant à votre modèle de rendre le champ à l'aide de balises, par exemple
Cela pourrait être une réponse tardive mais c'est une version simplifiée qui peut être modifiée à l'aide de la forme de l'instance.
Vous pouvez passer soit une liste de valeurs pour être handicapé, j'.e
OU
Désactivé une option sur la base d'une condition j'.e de l'utilisateur n'est pas un super-utilisateur.