開始時に以下のフィールドを持つモデルがあります
class Option(models.Model):
description = models.CharField(max_length = 100, null = False, blank = False)
price = models.PositiveIntegerField(null = False, blank = False, editable = True)
最初は、価格フィールドを としてモデルを設計しましたが、などのPositiveIntegerField
ように 10 進数値を入力すると、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 などの 10 進数値を入力しようとすると、レコードを保存しようとすると、次のようなエラーがスローされました。
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)