python - Django ChoiceField 编辑后保存 None 值?

标签 python django django-forms django-templates django-views

我有一个模型如下,

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")

我有一个该模型的模型形式,如下所示,

 class UserProfileForm(forms.ModelForm):

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

以及编辑表单的 View ,

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

以及编辑用户个人资料表单的模板,

    <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>

问题仅在编辑用户配置文件表单时,当我单击此表单的提交按钮时,它会引发“此字段为必填字段”。当我单击选择字段并选择一个选项时,它就起作用了。但如果我没有选择一个选项,它会保存一个“无”。我想知道如何将值传递给选择字段。请帮忙?

最佳答案

您已将默认性别声明为 "" 空字符串。因此,如果用户未选择任何内容,则在您的表单中只需输入空字符串...

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

关于python - Django ChoiceField 编辑后保存 None 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44300003/

相关文章:

python - 为什么 matlab 中的反向 for 循环更快

python - 插入列表时数字发生变化

python - 获取 django oscar 中篮子的送货地址

django - 如何使用地理位置 API 向用户位置提供默认点域值,无法将字符串转换为 float :

django - 覆盖 Django ModelForm 的 Clean_unique 方法

python - 当前函数中的 getattr

python - 如何使用 Pandas 映射嵌套在字典中的元组的索引?

python - 如何在 django oscar 中设置 Paypal 重定向 url?

python - 如何为可重用的 Django 应用程序进行迁移?

django - 如何测试登录过程?