0

J'essaye de créer un ModelForm qui inclut un FloatRangeField. Cependant, lorsque POSTing le formulaire avec un nombre décimal, la validation de formulaire ne passe pas et il dit que je devrais entrer le nombre entier le plus proche.RangeWidget sur Django FloatRangeField

J'ai essayé de remplacer le comportement du widget en utilisant le code suivant:

class MyModelForm(ModelForm): 
 
    class Meta: 
 
     fields = '__all__' 
 
     model = MyModel 
 
     widgets = { 
 
      'value': RangeWidget(NumberInput(attrs={'step': 'any'})), 
 
     }

Cependant, cela ne revient pas le comportement souhaité, le problème mentionné ci-dessus persiste. Comment puis-je obtenir le comportement correct? J'utilise django-crispy-forms mais si je rends le formulaire d'une manière non croustillante, les problèmes persistent.

Répondre

0

Mon problème était que le formulaire faisait partie d'un formset. La substitution du widget dans ModelForm n'a donc pas fonctionné. J'ai dû le changer dans le inlineformset_factory:

MyModelFormSet = inlineformset_factory(
    ParentModel, 
    MyModel, 
    fields='__all__', 
    widgets = { 
      'value': RangeWidget(NumberInput(attrs={'step': 'any'})), 
     } 
)