我在开始时有以下字段的模型
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
更改为DecimalField
并更改价格字段,如下所示
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
?如何避免这种情况,需要进行任何额外的工作,以更改字段(如果已经是另一种类型)
forms.py
class OptionForm(ModelForm):
class Meta:
model = Option
OptionFormset = formset_factory(OptionForm, max_num=10, formset=RequiredFormSet)