Я только что реализовал собственный виджет для этого:
class YesNoNARadioSelect(widgets.Widget):
CHOICES=((True,'Yes'),(False,'No'),(None,'N/A'))
def render(self,name,value,attrs=None):
s=[]
for c in self.CHOICES:
extraAttrs=attrs.copy()
extraAttrs.update(dict(type='radio',name=name,value=c[0]))
if value==c[0]: extraAttrs['checked']='checked'
extraAttrs=self.build_attrs(extraAttrs)
s.append(format_html('<label><input {}/>{}</label>',flatatt(extraAttrs),c[1]))
return S(''.join(s))
Кажется, работает для меня, хотя я хотел бы услышать обо всем, что я делаю с этим не так.