2017-06-01 16 views
0

次のように私はそのモデルのために、次のように私は編集のためにDjango ChoiceFieldは編集後に値を保存しませんか?

def userprofile_edit(request, pk): 
     userprofile = UserProfile.objects.get(pk=pk) 
     form = UserProfileForm(request.POST or None,instance=userprofile) 

     if request.method == "POST": 
      form = UserProfileForm(request.POST or None,instance=userprofile) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      post.save() 
      return redirect('userprofile') 
     else: 
      form = UserProfileForm(instance=userprofile) 
     else: 
      form = UserProfileForm(request.POST or None,instance=userprofile) 
     return render(request,'userprofiles/user_edit.html', {'form':form,'userprofile': userprofile}) 

、テンプレート、編集フォーム用

class UserProfileForm(forms.ModelForm): 

def __init__(self, *args, **kargs): 
    super(UserProfileForm, self).__init__(*args, **kargs) 
    class Meta: 
     model = UserProfile 
     fields = '__all__' 

とビュー、のModelFormを持って

gender = (
    ('Male', 'Male'), 
    ('Female', 'Female'), 
    ) 

class UserProfile(models.Model): 
    profile_id = models.CharField(max_length=60, blank=True,default='',) 
    gender = models.CharField(max_length=60, blank=True, default='', 
           choices=gender,verbose_name="gender") 

、モデルを持っていますユーザープロフィールフォーム、

<div class="col-md-3"> 
     <div class="form-group"> 
      <label>Gender <star>*</star></label> 
      <select name="gender" required class="selectpicker" value="{{ userprofile.gender }}" data-title="{{ userprofile.gender }}" data-style="btn-default btn-block" data-menu-style="dropdown-blue"> 
{% for Male,Female in form.fields.gender.choices %} 
    <option value="{{ Male }}"{% if form.fields.gender.value == Male %} selected{% endif %}>{{ Female }}</option> 
{% endfor %} 
</select> 

問題は、userprofileフォームを編集している間のみです。このフォームの[送信]ボタンをクリックすると、[このフィールドは必須です]が表示されます。 choicefieldをクリックしてオプションを選択すると、それが機能します。しかし、オプションを選択しなかった場合、Noneが保存されます。selectfieldに値を渡す方法を知りたがっています。助けてください?

+1

私はジェンダーのデフォルトは空の文字列を参照してください。それでは、 '' ? –

+0

何をしようとしていますか?選択オプションが選択されていない場合に保存する内容 – Exprator

+0

@ RajaSimonその仕事は、ありがとう –

答えて

1

性別の既定値は、""の空の文字列として宣言しています。だからあなたのフォームでは、ユーザーが何も選択しない場合空の文字列を入れて...

<option selected="selected" value=""></option> 
0

あなたはモデルのフォームを使用しているので、フォームのHTMLを記述する必要はありません、とにかくあなたがview.Youからフォームを戻ってきているようにそれを書くことができます。

<div> 
<form action="your url" method="POST"> 
{% csrf_token %} 
    {{ form.as_p }} 
<butoon type="submit">Update</button> 
</form> 

選択フィールドが空白になる唯一の可能性は、選択されていない可能性があることです。

関連する問題