2015-02-02 1 views
0

선택 템플릿으로보기에서 전달 된 미리 선택된 값을 표시하는 방법이 내 문제입니다 :장고 1.5 :

나는 사용자 데이터를 표시하는 HTML 페이지를 짓고 있어요. 나는이 방법으로 데이터를 수집 등록 사용자 데이터 페이지에서

: 사용자가 피자의 그의 마음에 드는 유형을 선택할 수 있습니다 이런 식으로

<div class="large-3 columns"> 
    <label for="pizza">Type of Pizza; 
      <select id="pizza" name="pizza" > 
       {% for key, value in pizza.items %} 
         <option value="{{key}}">{{value}}</option> 
       {% endfor %} 
      </select> 
    </label> 
</div> 

.

그런 다음 사용자는 ChangeUserData 페이지에서 자신이 좋아하는 피자를 변경할 수 있습니다.

사용자가 원하는 경우 다른 사람 (새로운 유형의 피자)과 데이터를 변경할 가능성이있는 내보기 (자신이 좋아하는 피자)에서 전달 된 데이터를 선택 필드에 표시하려고합니다.

어떻게하면됩니까?

답변

1

forms framework을 사용해야합니다. 피자가 UserProfile 모델에 저장되어 있다고 가정합니다. 그런 다음

class UserProfileForm(forms.ModelForm): 
    class Meta: 
     model = UserProfile 
     fields = ['favorite_pizza', ] 

당신은 UpdateView 또는 양식을 사용하는 일부 사용자 지정보기를 사용할 수 있습니다

먼저, 양식을 정의하여 응용 프로그램에 forms.py 파일을 만듭니다.

<form method='post' action='.'> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <input type='submit' value='Confirm pizza change'/> 
</form> 

이 방법은, 선택에 따라 선택을 렌더링 장고 당신이 정의에 지정해야합니다 : 템플릿 'your_template'에게 지금

class UserProfileUpdateView(UpdateView): 
    template_name = 'your_template' 
    model = UserProfile 
    form_class = UserProfileForm 

:의 우리가 업데이트보기를 가정 해 봅시다 favorite_pizza 필드의 또한이 값은 사용자가 이전에 선택한 값으로 설정됩니다.

편집 : 등록 페이지에서 동일한 작업을 수행하는 것이 좋습니다. 일반적으로 사용자 입력을 처리 할 수있을 때마다 양식 프레임 워크를 사용하는 것이 훨씬 빠르고 안전합니다.