我在开始时有以下字段的模型
class Option(models.Model):
description = models.CharField(max_length = 100, null = False, blank = False)
price = models.PositiveIntegerField(null = False, blank = False, editable = True)
起初,我设计了价格字段为的模型PositiveIntegerField
,但是当我们输入诸如5.36, 56.2314
等的十进制值时,我得到了一个Keyerror : 'invalid'
所以我决定将字段从PositiveIntegerField
toDecimalField
更改为如下所示的价格字段
price = models.DecimalField(max_digits = 6, decimal_places = 2, null = False, blank = False) # price in dollars
但是,当我们尝试输入 32.56、5.36 等十进制值并尝试保存记录时,它会抛出如下错误
u'max_digits'
Request Method: POST
Request URL: http://127.0.0.1:8000/option/new/192/
Django Version: 1.5.4
Exception Type: KeyError
Exception Value:
u'max_digits'
Exception Location: /home/user/Envs/proj/local/lib/python2.7/site-packages/django/forms/fields.py in validate, line 320
和views.py中的错误23
21 if request.method == 'POST':
22 option_formset = OptionFormset(request.POST, request.FILES)
23 if option_formset.is_valid():
keyerror
那么,当我将价格从DecimalField 更改为时,为什么我会面临这种情况PositiveIntegerField
?如何避免这种情况,需要做任何额外的工作来更改字段(如果它已经是不同的类型)
表格.py
class OptionForm(ModelForm):
class Meta:
model = Option
OptionFormset = formset_factory(OptionForm, max_num=10, formset=RequiredFormSet)