2017-01-06 2 views
1

J'ai cherché dans la documentation de Crispy Forms ainsi que sur le Web en général pour trouver une réponse à cette question.Django Formes croustillantes et groupes d'options

Can Crispy Forms affiche <optgroup> dans un champ ChoiceField à l'aide du widget forms.Select? Ou dois-je prendre les données dans le contexte et construire le formulaire à l'ancienne dans le modèle?

Merci!

+1

Veuillez montrer un peu de code. Avez-vous regroupé vos choix [comme dans les docs] (https://docs.djangoproject.com/fr/dev/ref/models/fields/#choices)? – Alasdair

+0

Merci. Je me suis tellement accroché à la recherche d'une solution dans la documentation de Crispy que j'ai négligé de vérifier les docs de base de Django. Je me sens idiot. (Encore nouveau dans le monde de Django alors pardonnez-moi.) – RickZ

Répondre

0
USER_GENERATED_TEMPLATES = MessageTemplate.objects.filter(Q(client=client_id) | Q(client=None) & Q(user_generated=True)) 
DEFAULT_TEMPLATES = MessageTemplate.objects.filter(Q(client=client_id) | Q(client=None) & Q(user_generated=False)) 

# Set the initial TEMPLATE CHOICES list to include the Default Templates choice object 
TEMPLATE_CHOICES = [('Default Templates',([[template.id, template.name] for template in DEFAULT_TEMPLATES]))] 

# If there are user generated templates, append the TEMPLATE_CHOICES list to include them 
if USER_GENERATED_TEMPLATES.count() > 0: 
    TEMPLATE_CHOICES.append(('Saved Templates',([[template.id, template.name] for template in USER_GENERATED_TEMPLATES]))) 

# Set the 'template' form field to a ChoiceField using the Select widget populated by the TEMPLATE_CHOICES list. 
self.fields['template'] = forms.ChoiceField(widget = forms.Select(), choices=TEMPLATE_CHOICES) 
3

Les choices docs donnent un exemple de la façon dont vous pouvez regrouper vos choix. Si vous faites cela, alors le widget select devrait afficher les optgroups, que vous utilisiez ou non des formulaires croustillants.

+0

Merci Alasdair, j'ai été capable de frapper ça plus tôt et de trouver ce dont j'avais besoin. Posté ci-dessous pour référence future. – RickZ