2012-05-09 8 views
1

ModelMultipleChoiceField에 추가 옵션을 추가 할 수 있습니까? 특히, 모든 선택 항목을 개별적으로 선택해야하는 최종 사용자 대신 "모두 선택"옵션을 추가하려고합니다.DJANGO : ModelMultipleChoiceField에 "모두 선택"옵션을 추가 하시겠습니까?

현재 모델 형태 :

class QueryForm(forms.Form): 
    book = forms.ModelMultipleChoiceField(queryset=Book.objects.all()) 

나는 이런 식으로 뭔가를 원하는 :

class QueryForm(forms.Form): 
    book = forms.ModelMultipleChoiceField(choices=(('Select All', 'Select All'),(Book.objects.all())) 

어떻게 선택을 다중 선택 필드를 모델에 모든 옵션을 추가 할 수 있습니까?

+2

은 자바 스크립트와이 클라이언트 측을 할 쉬울 수 있습니다 ... – AdamKG

답변

0

ModelMultipleChoiceField__init__()의 관련 모델에서 선택하는 MultipleChoiceField으로 변환해야합니다. 실제 모델에서 가져올 PK가 아닌 "모두 선택"옵션과 함께 센티넬을 추가하십시오. 그런 다음 POST보기에서이를 감지하고 적절하게 설정하십시오.

3

Django 관리자 또는 본인의 양식입니까? 관리자 인 경우 가장 쉬운 방법은 ModelAdmin.filter_horizontal 또는 ModelAdmin.filter_vertical에 필드를 추가하는 것입니다. 장고 관리자가 사용할 특수 필드에는 "모두 선택"옵션이 내장되어 있습니다.

자신 만의 형식 인 경우 @AdamKG가 권장하는 JS가 최선의 방법입니다.

<div class="field"> 
    <select multiple="multiple" name="my_field"> 
     <option value="something">Something</option> 
     ... 
    </select> 
    <a href="#" class="select-all">Select All</a> 
</div> 

jQuery를이 비트가 트릭을 수행해야합니다 : 다음 감안할 때

$('.select-all').click(function(){ 
    $('option', $(this).parent()).attr('selected', 'selected'); 
}); 
관련 문제