Mar*_*ius 2 django django-forms
我使用a ModelForm并且我想为一个设置max_value而IntegerField不会丢失从模型创建的其他属性(verbose_name等).
这是我的ModelForm:
class DataForm(ModelForm):
def __init__(self, *args, **kwargs):
super(DataForm, self).__init__(*args, **kwargs)
self.fields['start_range_points'].max_value = 1000
class Meta():
model = DataModel
Run Code Online (Sandbox Code Playgroud)
这不起作用,django不对大数应用验证.如果我按以下方式创建字段,验证工作,但我丢失了从模型创建的信息.
class DataForm(ModelForm):
start_range_points = forms.IntegerField(min_value=0, max_value=1000)
class Meta():
model = DataModel
Run Code Online (Sandbox Code Playgroud)
我能做些什么来实现类似于尝试#1的东西?
__init__如果存在max_value,则在IntegerField的函数中添加max_value的验证器.因此,您需要手动添加验证器,例如:
from django.core.validators import MaxValueValidator
class DataForm(ModelForm):
def __init__(self, *args, **kwargs):
super(DataForm, self).__init__(*args, **kwargs)
validators = [ v for v in self.fields['start_range_points'].validators if not isinstance(v, MaxValueValidator) ]
validators.append( MaxValueValidator(1000) )
self.fields['start_range_points'].validators = validators
class Meta():
model = DataModel
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
737 次 |
| 最近记录: |