Use float for price field

This commit is contained in:
Gabriel Augendre 2018-06-04 18:28:40 +02:00
parent 651907682c
commit 1c01e4f7dc
2 changed files with 31 additions and 1 deletions

View file

@ -0,0 +1,19 @@
# Generated by Django 2.0.5 on 2018-06-04 16:27
from django.db import migrations, models
import manuels.models
class Migration(migrations.Migration):
dependencies = [
('manuels', '0022_teacher_has_confirmed_list'),
]
operations = [
migrations.AlterField(
model_name='book',
name='price',
field=models.FloatField(validators=[manuels.models.positive_float_validator], verbose_name='prix'),
),
]

View file

@ -131,6 +131,17 @@ def isbn_validator(value):
raise ValidationError("%(value)s n'est pas un ISBN valide.", params={'value': value})
def positive_float_validator(value):
try:
value = float(value)
except ValueError:
raise ValidationError("%(value)s doit être un nombre décimal")
if value < 0:
raise ValidationError("%(value)s doit être un nombre positif")
class Book(BaseModel):
class Meta:
verbose_name = 'livre'
@ -150,7 +161,7 @@ class Book(BaseModel):
"suivis de la lettre <code>X</code>",
validators=[isbn_validator]
)
price = models.PositiveIntegerField('prix')
price = models.FloatField('prix', validators=[positive_float_validator])
YES_NO_CHOICE = (
(False, 'Non'),
(True, 'Oui'),