Django已经这么做了,但是Crispy只在你使用Bootstrap v4模板包的时候才这么做。(**注意:**我的答案指的是Crispy 1.x。Crispy 2是几周前发布的,有一些重大的变化我还没有回顾,所以我的答案只适用于1.x版本。 如果您查看Django docs for the Field.choices value,它显示您可以使用如下结构:
from django import forms
CHOICES = [
('vendredi 17 fevrier 2023', (
('20230217_0900', 'De 09:00 a 09:00'),
('20230217_0920', 'De 09:20 a 09:40'),
)),
('lundi 20 fevrier 2023', (
('20230220_1600', 'De 16:00 a 16:20'),
))
]
class MyForm(forms.Form):
my_field = forms.ChoiceField(widget=forms.widgets.RadioSelect, choices=CHOICES)
1条答案
按热度按时间camsedfj1#
Django已经这么做了,但是Crispy只在你使用Bootstrap v4模板包的时候才这么做。(**注意:**我的答案指的是Crispy 1.x。Crispy 2是几周前发布的,有一些重大的变化我还没有回顾,所以我的答案只适用于1.x版本。
如果您查看Django docs for the
Field.choices
value,它显示您可以使用如下结构:当在Django模板(
{{ form }}
)中使用时,HTML的结构如您所愿:但至于Crispy,它看起来只在您使用他们的Bootstrap v4模板时可用:https://github.com/django-crispy-forms/django-crispy-forms/blob/1.14.0/crispy_forms/templates/bootstrap4/layout/radioselect.html。请注意,它们在第6行循环
optgroups
。它们在提供的其他模板包中不会这样做。因此,如果您使用其他模板包之一,那么我认为您需要编写一个自定义小部件/模板。(在100%确定之前,我可能需要对此进行一些调查,b/c在Form.__init__
方法中可能有一种方法可以做到这一点,在该方法中,您可以动态更新字段和小部件等。)无论如何,这可能不能解决你的问题,但希望它能为你指明正确的方向。如果我能提供更多的帮助,请告诉我!