我试图让Django的RadioSelect小部件呈现水平。我发现下面的SO后,我认为已经解决了这个问题:Align radio buttons horizontally in django forms,它基本上是各国使用自定义渲染器,如下所示:自定义RadioSelect渲染
class HorizontalRadioRenderer(forms.RadioSelect.renderer):
def render(self):
return mark_safe(u'\n'.join([u'%s\n' % w for w in self]))
class MyForm(ModelForm):
select=forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect(renderer=HorizontalRadioRenderer
但是,当我实现这一点,我仍然得到无线电选择按钮呈现垂直。这是一个截图。
这是我的表单的seriois问题。任何想法为什么它不能正常工作?如果它很重要,表单将呈现在表格中。
感谢
UPDATE:
好吧,我已经试过别的东西。该渲染器现在是:
def render(self):
internal=''.join(['<span id="radio">%s</span>' % w for w in self])
return mark_safe(u'%s' %internal)
,我已经添加了CSS来我的样式表:
#radio{
width: 100px;
float: left;
}
这使得该选项框内嵌和看起来很大。但现在有一个更大的问题。正如我在上面的屏幕截图所看到的,我有2个选择,是和N/A。现在,如果我点击yes或N/A,则会选择N/A。我认为这可能是因为他们都在同一个身份证的跨度,但如果我将其更改为class="radio"
发生同样的事情。如果我从CSS中删除float: left
,那么它正常工作(但是,当然,不会水平显示)。任何想法是什么造成这个?
由于表格单元格的存在,最有可能只是折叠。你应该看看HTML并找出发生了什么。你猜这里太多东西了。渲染器在工作吗?如果是,那剩下的是什么? –
@ Yuji'Tomita'Tomita看起来并不像表格单元格......我只是单独呈现它,而且它也在做同样的事情。渲染器是“工作”(我的意思是,如果我更改渲染器,它的影响被应用),但似乎没有做我想做的事情。更多信息会有帮助吗?如果是这样,什么? –