2013-04-09 2 views
3

나는 CheckboxSelectMutliple 위젯으로 MultipleChoiceField이 : 나는 동적 인 7 개 체크 박스에 "참"의 3을 설정하기 위해 노력하고있어설정 초기 값은 동적으로

weight_training_days = forms.MultipleChoiceField(
    help_text=u'(Required) 3 days must be selected', 
    widget=forms.CheckboxSelectMultiple(attrs={ 
     'inline': True, 
    }), 
    choices=(
     (0, "Mon"), 
     (1, "Tue"), 
     (2, "Wed"), 
     (3, "Thu"), 
     (4, "Fri"), 
     (5, "Sat"), 
     (6, "Sun"), 
    ), 
) 

. 이상적으로 저는 이것을보기에서 할 것입니다.

def change_challenge_settings_page(request): 

    c = Challenge.objects.get(user__exact = request.user,chal_status=1) 

    layout = 'horizontal' 
    form =UpdateChallengeSettingsForm(initial={'goal': c.level_goal }) 

    return render(request, 'portal/portal_change_challenge_settings.html', {'form': form,'layout': layout,'scorecard_page': True,}) 

내가 ChoiceFields이 작업을 수행하는 방법을 알고 (이하 "목표"위의 예에서 ChoiceField입니다)하지만 MultipleChoiceFields에 관해서 붙어입니다. 나는 정말로 어떤 생각/피드백을 주셔서 감사합니다.

답변

3

목록을 초기 값으로 설정할 수 있습니다. 이 경우 YourForm(inital={'weight_training_days': [0,1,2]})을 설정하면 기본적으로 월요일, 화요일 및 수요일이 선택됩니다. 당신도 그렇게 할 수 있습니다 forms.MultipleChoiceField(... inital=[0,1,2] ...)

+0

딱! 잘됐다. 피드백에 정말 감사드립니다. – bbrooke

+0

문제 없으니 기꺼이 도와 드리겠습니다. – Ngenator

1

그것은 매우 간단합니다, 그냥 목록을 전달하십시오.

from django import forms 
class UpdateChallengeSettingsForm(forms.Form): 
    weight_training_days = forms.MultipleChoiceField(
     help_text=u'(Required) 3 days must be selected', 
     widget=forms.CheckboxSelectMultiple(attrs={ 
      'inline': True, 
     }), 
     choices=(
      (0, "Mon"), 
      (1, "Tue"), 
      (2, "Wed"), 
      (3, "Thu"), 
      (4, "Fri"), 
      (5, "Sat"), 
      (6, "Sun"), 
     ), 
    ) 

form = UpdateChallengeSettingsForm(initial={ 
    'weight_training_days': [1,2,4,5,6], 
}) 

print form.as_p() 

을 그리고 출력 : 다음은 전체 예제입니다

<p><label for="id_weight_training_days_0">Weight training days:</label> <ul> 
<li><label for="id_weight_training_days_0"><input inline="True" type="checkbox" name="weight_training_days" value="0" id="id_weight_training_days_0" /> Mon</label></li> 
<li><label for="id_weight_training_days_1"><input checked="checked" name="weight_training_days" value="1" inline="True" type="checkbox" id="id_weight_training_days_1" /> Tue</label></li> 
<li><label for="id_weight_training_days_2"><input checked="checked" name="weight_training_days" value="2" inline="True" type="checkbox" id="id_weight_training_days_2" /> Wed</label></li> 
<li><label for="id_weight_training_days_3"><input inline="True" type="checkbox" name="weight_training_days" value="3" id="id_weight_training_days_3" /> Thu</label></li> 
<li><label for="id_weight_training_days_4"><input checked="checked" name="weight_training_days" value="4" inline="True" type="checkbox" id="id_weight_training_days_4" /> Fri</label></li> 
<li><label for="id_weight_training_days_5"><input checked="checked" name="weight_training_days" value="5" inline="True" type="checkbox" id="id_weight_training_days_5" /> Sat</label></li> 
<li><label for="id_weight_training_days_6"><input checked="checked" name="weight_training_days" value="6" inline="True" type="checkbox" id="id_weight_training_days_6" /> Sun</label></li> 
</ul> <span class="helptext">(Required) 3 days must be selected</span></p> 
+0

굉장해! 고맙습니다 – bbrooke