我基本上有这样的东西,
模型
class Survey(models.Model):
aggbs_0 = models.PositiveSmallIntegerField(verbose_name='Has Tantrums.', blank=True)
表格
class SurveyForm(forms.ModelForm):
nsf_CHOICES = (
(1, 'Never',),
(2, '',),
(3, 'Sometimes',),
(4, '',),
(5, 'Frequently',),
)
aggbs_0 = forms.ChoiceField(required=False, widget=forms.RadioSelect(renderer=HorizRadioRenderer), choices=nsf_CHOICES, label=Survey._meta.get_field_by_name('aggbs_0')[0].verbose_name)
class Meta:
model = Survey
视图
def survey_create(request):
form = SurveyForm(request.POST or None)
if form.is_valid():
saved = form.save(commit=False)
saved.save()
messages.success(request, "submitted.")
return render_to_response("reports/survey_form.html",
locals(),
context_instance=RequestContext(request))
当我提交表格而没有填写我正在收到的单选按钮时,
invalid literal for int() with base 10: ''
如果他们没有填写单选按钮,我希望该值为0.
答案 0 :(得分:2)
ChoiceField州的文件:
- 空值:
''
(空字符串)- 规范化为:Unicode对象。
实际上,对于带有基数为10的int()的无效文字:''是在空字符串上调用int
的结果。
您要使用的是TypedChoiceField:
- 空值:无论你给出
empty_value
- Normalizes to:
coerce
参数提供的类型值。
在您的情况下,您应该使用 TypedChoiceField ,就像使用 ChoiceField 一样,除了您还应该添加empty_value=0
参数。