0

開始時に以下のフィールドを持つモデルがあります

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.2314Keyerror : '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)
4

0 に答える 0