フォーム レベルで制約が必要な場合は、フォーム フィールドmin_valueにおよびmax_valueを渡すことができます。
myfloat = forms.FloatField(min_value=0.0, max_value=1.0)
ただし、モデル レベルに移動する必要がある場合は、基本models.FloatFieldクラスを拡張する必要があります。
class MinMaxFloat(models.FloatField):
def __init__(self, min_value=None, max_value=None, *args, **kwargs):
self.min_value, self.max_value = min_value, max_value
super(MinMaxFloat, self).__init__(*args, **kwargs)
def formfield(self, **kwargs):
defaults = {'min_value': self.min_value, 'max_value' : self.max_value}
defaults.update(kwargs)
return super(MinMaxFloat, self).formfield(**defaults)
その後、モデルで使用できます
class Foo(models.Model):
myfloat = MinMaxFloat(min_value=0.0, max_value=1.0)