我有一個型號如下,Django ChoiceField在編輯後保存None值嗎?
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")
我有一個的ModelForm該型號如下,
class UserProfileForm(forms.ModelForm):
def __init__(self, *args, **kargs):
super(UserProfileForm, self).__init__(*args, **kargs)
class Meta:
model = UserProfile
fields = '__all__'
和視圖編輯表單,
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})
而且模板編輯userprofile form,
<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表單時,當我單擊此表單的提交按鈕時,它引發「此字段是必需的」。當我點擊選擇字段並選擇一個選項時,它可以工作。但是如果我沒有選擇一個選項,它會節省一個None。我想知道如何將值傳遞給selectfield。請幫忙?
我看到性別默認爲空字符串。那爲什麼不通過'' ? –
你在想什麼?如果沒有選擇選項,你想保存什麼? – Exprator
@RajaSimon其工作,謝謝你 –