KeyError:带有django十进制字段的u'max_digits'

时间:2013-12-05 13:43:13

标签: django keyerror

我在开始时有以下字段的模型

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)

0 个答案:

没有答案