Python 使用表单获取URL

Python 使用表单获取URL,python,django,django-forms,Python,Django,Django Forms,我有一些问题: 我使用django表单和类似multipleChiceField的字段 在view.py中,我清理数据并获得如下URL 给我建议,我可以重新组合品牌字段并隐藏为空。 我想得到这样的东西: 还有一个问题: 如何为forms.ModelMultipleChiceField设置空值(空标签) forms.py: brand = forms.MultipleChoiceField(required=False, wi

我有一些问题:
我使用django表单和类似multipleChiceField的字段
在view.py中,我清理数据并获得如下URL

给我建议,我可以重新组合品牌字段并隐藏为空。
我想得到这样的东西:

还有一个问题:
如何为forms.ModelMultipleChiceField设置空值(空标签)

forms.py:

brand = forms.MultipleChoiceField(required=False,
                                  widget=forms.SelectMultiple(attrs={'size':1})
                                  )
def __init__(self,app_label=None, *args, **kwargs):        
    super(Search, self).__init__(*args, **kwargs)
    self.fields['brand'].choices = [('', 'All brands')]+[(brand.name, brand) for brand in Brand.objects.all() ]
views.py:

 if request.method == 'GET' and request.GET:
     form = SearchForm(app_label, request.GET)
     if form.is_valid():   
        brands = form.cleaned_data['brand']
        kwargs.update({"brand__name__in": brands})

对于表单中的空标签,可以执行以下操作-

class SomeForm(forms.Form):
    h=forms.CharField(label=u'',widget=forms.TextInput(attrs={'value':'Search'}))
通过将
label
保留为“”,可以将标签设置为空。
attrs
基本上是表单文本字段的HTML属性


更新:我不明白你问题的第一部分,详细说明…

这就是浏览器提交多个数据的方式。这是HTML规范的一部分,试图改变它将是愚蠢的,从技术上讲,我不理解为什么您会试图关心url获取数据的外观

这就是说,如果您想更改它提交的方式,您需要javascript来转换表单提交上的数据。Django与此事无关

以jQuery为例:

$('#form').submit(function(){
    //Get form data
    //Transform into my custom set of vars
    //Redirect to form's ACTION with my querystring appended.
});

请记住,在Django端不会自动解析值。通常,它会为您将其转换为列表,但现在您自己负责解析“value+value+value”。

第一部分:我不喜欢我的URL的外观第二部分:对于我来说,为forms.modelmultipechoicefield获取空标签(这不是作为HTML标签的标签)很重要