avoid type='number' in input fields causing validation errors

This commit is contained in:
artus40
2017-09-23 13:12:41 +02:00
parent c73750f28a
commit a80c3e4bed
3 changed files with 38 additions and 10 deletions

View File

@@ -1,13 +1,29 @@
from django import forms from django import forms
from .models import Enregistrement from .models import Enregistrement, EnregistrementRecursif
class EnregistrementForm(forms.ModelForm): class EnregistrementForm(forms.ModelForm):
class Meta:
model = Enregistrement
fields = ('montant', 'description', 'date', 'etiquette')
widgets = {'montant': forms.TextInput(),
'etiquette': forms.Select(
attrs={'class':'form-control custom-select'}
),
'date': forms.SelectDateWidget(
attrs={'class':'form-control custom-select mx-1'}
)
}
class EnregistrementSpecialForm(forms.ModelForm):
est_negatif = forms.BooleanField(required=False) est_negatif = forms.BooleanField(required=False)
class Meta: class Meta:
model = Enregistrement model = Enregistrement
fields = ('montant', 'description', 'date', 'etiquette') fields = ('montant', 'description', 'date', 'etiquette')
widgets = {'etiquette': forms.Select( widgets = {'montant': forms.TextInput(attrs={'class':'form-control'}),
'etiquette': forms.Select(
attrs={'class':'form-control custom-select'} attrs={'class':'form-control custom-select'}
), ),
'date': forms.SelectDateWidget( 'date': forms.SelectDateWidget(
@@ -17,9 +33,19 @@ class EnregistrementForm(forms.ModelForm):
def clean(self): def clean(self):
data = super().clean() data = super().clean()
print(data)
# Force un nombre négatif si 'est_negatif' est coché # Force un nombre négatif si 'est_negatif' est coché
if (data['est_negatif'] if (data['est_negatif']
and data['montant'] > 0): and data['montant'] > 0):
self.cleaned_data['montant'] = 0 - data['montant'] self.cleaned_data['montant'] = 0 - data['montant']
return self.cleaned_data return self.cleaned_data
class EnregistrementRecursifForm(forms.ModelForm):
class Meta:
model = EnregistrementRecursif
fields = ('jour', 'description', 'etiquette', 'montant')
widgets = {'montant': forms.TextInput(),
'etiquette': forms.Select(
attrs={'class':'form-control custom-select'}
),
}

View File

@@ -13,9 +13,9 @@
<label class="control-label" for="id_montant">Montant</label> <label class="control-label" for="id_montant">Montant</label>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon"> <span class="input-group-addon">
<img src="{% static "img/minus-square.svg"%}" />{{ form.est_negatif}} {{ form.est_negatif}}<img src="{% static "img/minus-square.svg"%}" />
</span> </span>
<input class="form-control" type="number" id="id_montant" name="montant" required /> {{ form.montant }}
</div> </div>
</div> </div>
{% bootstrap_field form.description form_group_class="form-group col-8" %} {% bootstrap_field form.description form_group_class="form-group col-8" %}

View File

@@ -8,7 +8,9 @@ from django import views
from django.contrib import messages from django.contrib import messages
from .models import (Enregistrement, Etiquette, EnregistrementRecursif,) from .models import (Enregistrement, Etiquette, EnregistrementRecursif,)
from .forms import EnregistrementForm from .forms import (EnregistrementForm, EnregistrementSpecialForm,
EnregistrementRecursifForm,
)
# Utils # Utils
@@ -90,7 +92,7 @@ class MonthView(views.generic.ListView):
class EnregistrementAddView(views.generic.edit.CreateView): class EnregistrementAddView(views.generic.edit.CreateView):
model = Enregistrement model = Enregistrement
template_name_suffix = "_add" template_name_suffix = "_add"
form_class = EnregistrementForm form_class = EnregistrementSpecialForm
def get_initial(self): def get_initial(self):
# Build the initial date # Build the initial date
@@ -114,7 +116,7 @@ class EnregistrementAddView(views.generic.edit.CreateView):
class EnregistrementUpdateView(views.generic.edit.UpdateView): class EnregistrementUpdateView(views.generic.edit.UpdateView):
model = Enregistrement model = Enregistrement
template_name_suffix = "_update_form" template_name_suffix = "_update_form"
fields = "__all__" form_class = EnregistrementForm
def get_success_url(self): def get_success_url(self):
return reverse("month-view", return reverse("month-view",
@@ -164,14 +166,14 @@ class RecursifListView(views.generic.ListView):
class RecursifAddView(views.generic.edit.CreateView): class RecursifAddView(views.generic.edit.CreateView):
model = EnregistrementRecursif model = EnregistrementRecursif
fields = ('jour', 'description', 'etiquette', 'montant') form_class = EnregistrementRecursifForm
template_name_suffix = "_add_form" template_name_suffix = "_add_form"
success_url = reverse_lazy('recursif-list') success_url = reverse_lazy('recursif-list')
class RecursifUpdateView(views.generic.edit.UpdateView): class RecursifUpdateView(views.generic.edit.UpdateView):
model = EnregistrementRecursif model = EnregistrementRecursif
fields = ('jour', 'description', 'etiquette', 'montant') form_class = EnregistrementRecursifForm
template_name_suffix = "_update_form" template_name_suffix = "_update_form"
success_url = reverse_lazy('recursif-list') success_url = reverse_lazy('recursif-list')