'Most widgets yield a single subwidget, but others like RadioSelect and
CheckboxSelectMultiple produce one subwidget for each choice.
This property is cached so that only one database query occurs when
rendering ModelChoiceFields.'

@cached_property
def subwidgets(self):

    id_ = (self.field.widget.attrs.get('id') or self.auto_id)
    attrs = ({'id': id_} if id_ else {})
    attrs = self.build_widget_attrs(attrs)
    return [BoundWidget(self.field.widget, widget, self.form.renderer) for widget in self.field.widget.subwidgets(self.html_name, self.value(), attrs=attrs)]
