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 .models import Enregistrement
from .models import Enregistrement, EnregistrementRecursif
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)
class Meta:
model = Enregistrement
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'}
),
'date': forms.SelectDateWidget(
@@ -17,9 +33,19 @@ class EnregistrementForm(forms.ModelForm):
def clean(self):
data = super().clean()
print(data)
# Force un nombre négatif si 'est_negatif' est coché
if (data['est_negatif']
and data['montant'] > 0):
self.cleaned_data['montant'] = 0 - data['montant']
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>
<div class="input-group">
<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>
<input class="form-control" type="number" id="id_montant" name="montant" required />
{{ form.montant }}
</div>
</div>
{% 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 .models import (Enregistrement, Etiquette, EnregistrementRecursif,)
from .forms import EnregistrementForm
from .forms import (EnregistrementForm, EnregistrementSpecialForm,
EnregistrementRecursifForm,
)
# Utils
@@ -90,7 +92,7 @@ class MonthView(views.generic.ListView):
class EnregistrementAddView(views.generic.edit.CreateView):
model = Enregistrement
template_name_suffix = "_add"
form_class = EnregistrementForm
form_class = EnregistrementSpecialForm
def get_initial(self):
# Build the initial date
@@ -114,7 +116,7 @@ class EnregistrementAddView(views.generic.edit.CreateView):
class EnregistrementUpdateView(views.generic.edit.UpdateView):
model = Enregistrement
template_name_suffix = "_update_form"
fields = "__all__"
form_class = EnregistrementForm
def get_success_url(self):
return reverse("month-view",
@@ -164,14 +166,14 @@ class RecursifListView(views.generic.ListView):
class RecursifAddView(views.generic.edit.CreateView):
model = EnregistrementRecursif
fields = ('jour', 'description', 'etiquette', 'montant')
form_class = EnregistrementRecursifForm
template_name_suffix = "_add_form"
success_url = reverse_lazy('recursif-list')
class RecursifUpdateView(views.generic.edit.UpdateView):
model = EnregistrementRecursif
fields = ('jour', 'description', 'etiquette', 'montant')
form_class = EnregistrementRecursifForm
template_name_suffix = "_update_form"
success_url = reverse_lazy('recursif-list')