Django选择多个窗口小部件

Django选择多个窗口小部件,django,django-forms,Django,Django Forms,我有一些选项组,比如: Choices = (('Group1',(('Option1','Option1'),('Option2','Option2')))) 是否仍然可以使用SelectMultiple小部件水平显示选项而不是垂直显示选项?我的问题是我有太多的小组,所以如果我能有下面这样的小组就更好了 Group 1 - Option1, Option2, ... Group 2 - Option1, Option2, ... 更新-找到此项,但它仅适用于复选框SelectMultipl

我有一些选项组,比如:

Choices = (('Group1',(('Option1','Option1'),('Option2','Option2'))))
是否仍然可以使用SelectMultiple小部件水平显示选项而不是垂直显示选项?我的问题是我有太多的小组,所以如果我能有下面这样的小组就更好了

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

更新-找到此项,但它仅适用于复选框SelectMultiple。我应该如何更改它才能使用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>'))

你在使用Django管理员吗?如果是这样的话,和选项可以使多个选择更加有用,我必须承认,我以前从未用分组选择尝试过它们


如果这没有帮助,那么您可以将SelectMultiple小部件子类化,并根据需要覆盖呈现方法。我个人更喜欢在可能的情况下使用javascript小部件插件,例如。它们通常只需在模板标题中使用几行javascript即可工作,我发现这比编写自定义小部件html要轻松得多。

晚会晚了,但可能对某些人还是有帮助的:

Form(forms.Form):
    selection = forms.ModelMultipleChoiceField(queryset=models.MyModel.objects.all(),
                                               widget=widgets.FilteredSelectMultiple('', False))

是的,我用的是Django管理员。我想我会尝试覆盖SelectMultiple小部件。我还是Django的新手…发现了这个,但它只适用于CheckboxSelectMultiple。我应该如何更改它才能使用SelectMultiple?类HorizWidgetforms.SelectMultiple:def renderself,*args,**kwargs:output=superHorizWidget,self.render*args,**kwargs返回mark_safeoutput.replaceu,u.replaceu,u.replaceu,u''。replaceu。您可以编辑原始问题以包含代码。很抱歉,我无法帮助您编写自定义小部件,我希望有人可以帮助您或您可以解决它。祝你好运需要一个来自django.contrib.admin的导入小部件,因为这是一个仅限管理员的WidgetWidget。请看一看@