我有一个模型如下,
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/