Django选择多个小部件水平

时间:2012-03-05 23:02:51

标签: django django-forms

我有选项组,有些像这样:

Choices = (('Group1',(('Option1','Option1'),('Option2','Option2'))))

是否有水平显示选项而不是垂直使用SelectMultiple小部件?我的问题是我有太多的群组,所以如果我能得到类似下面的东西那就更好了。

Group 1 - Option1, Option2, ...
Group 2 - Option1, Option2, ...

更新 - 找到了这个,但它只是"工作"对于CheckboxSelectMultiple。我应该如何更改它才能使用SelectMultiple?

from django.utils.safestring import mark_safe

class HorizWidget(forms.SelectMultiple):

    def render(self, *args, **kwargs):
        output = super(HorizWidget, self).render(*args,**kwargs) 
        return mark_safe(output.replace(u'<ul>', u'').replace(u'</ul>', u'').replace(u'<li>', u'<p>').replace(u'</li>', u'</p>'))

2 个答案:

答案 0 :(得分:2)

您使用的是Django管理员吗?如果是这样,filter_horizontalfilter_vertical选项可以使多个选项更有用(我必须承认,我之前没有尝试使用分组选项)。

如果这没有帮助,那么您可以继承SelectMultiple窗口小部件并根据需要覆盖render方法。我个人更喜欢尽可能使用javascript小部件插件(例如jquery-ui-multiselect)。他们通常可以在模板标题中使用几行javascript,我发现这比编写自定义小部件html要痛苦得多。

答案 1 :(得分:0)

迟到聚会,但可能仍对某人有帮助:

<iframe id="mainwindow" name="mainwindow" style="top: 54px; height: 849px;" 
src="/h2/welcomeAction.do?misc=1582634309181" frameborder="0"></iframe>