django combine models.DecimalField with forms -> error: el resultado de cuantización tiene demasiados dígitos para el contexto actual

Quiero combinar un campo decimal modelo con un campo de elección de formularios.

El campo en el modelo:

sum = models.DecimalField(max_digits=2, decimal_places=2) 

El campo en el formulario:

 sum = forms.ChoiceField(choices=WORK_HOUR_CHOICES, label='Sum Working Hours', required=True) 

Las opciones:

 WORK_HOUR_CHOICES = ( (0, '0'), (0.5, '0.5'), (1, '1'), (1.5, '1.5'), (2, '2'), (2.5, '2.5') ) 

Pero siempre que quiera almacenar un valor con un lugar decimal, aparece este error:

 quantize result has too many digits for current context 

Cuando guardo un 0 o 1 funciona bien.

Que pasa

Es solo una suposición, pero apuesto a que necesitas poner decimales allí:

 WORK_HOUR_CHOICES = ( (Decimal("0"), '0'), (Decimal("0.5"), '0.5'), (Decimal("1"), '1'), (Decimal("1.5"), '1.5'), (Decimal("2"), '2'), (Decimal("2.5"), '2.5') ) 

No puede inicializar un decimal con una constante flotante, tiene que usar una cadena.

 >>> from decimal import Decimal >>> Decimal(1.5) Traceback (most recent call last): File "", line 1, in  File "C:\software\Python25\lib\decimal.py", line 578, in __new__ "First convert the float to a string") TypeError: Cannot convert float to Decimal. First convert the float to a string >>> Decimal("1.5") Decimal("1.5")