2010-11-30 3 views
1

У меня есть вопрос:
я использую Джанго формы, и поле, как MultipleChoiceField
в view.py чистит данные и получить GET URL как этого
http://localhost:8000/?category=&style=&sex=&brand=ASICS&brand=Be+Positive&low_price=&high_price=
Дайте мне посоветовать, могу ли я перегруппируйте область бренда и скройте пустой.
Я хочу получить что-то вроде этого:
http://localhost:8000/?brand=1+2Украсьте GET URL с помощью формы

И еще один вопрос:
Как я могу установить пустое значение (empty_label) для forms.ModelMultipleChoiceFIeld

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() ] 

. Виды деятельности:

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}) 
+0

первая часть: мне не понравилось, как выглядит мой URL-адрес – JIoJIaJIu 2010-11-30 13:53:12

ответ

0

Это как браузер представляет множество данных. Это часть спецификации HTML, попытка изменить ее была бы глуповатой и технически, я не могу понять, почему вы пытаетесь заботиться о том, как выглядят ваши данные GET вашего url.

Это, если вы хотите изменить способ подачи, вам понадобится javascript для преобразования данных в форму submit. Джанго не имеет никакого отношения к этому вопросу.

Использование JQuery, например:

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

Пожалуйста, имейте в виду, вы не получите никакого автоматического синтаксического анализа значений на стороне Django. Обычно это превращает его в список для вас, но теперь вы отвечаете за синтаксический анализ значения «значение + значение +».

0

Для пустой этикетки в формах, вы могли бы сделать это -

class SomeForm(forms.Form): 
    h=forms.CharField(label=u'',widget=forms.TextInput(attrs={'value':'Search'})) 

Ведя label как «», вы получите ярлык, как пустой. attrs - это в основном атрибуты HTML текстового поля формы.

UPDATE: я не понял первую часть вашего Q, разработанной ...

Смежные вопросы