这段代码还是无法在admin中进行身高数据的验证
时间: 2024-03-27 15:38:23 浏览: 57
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
根据您提供的代码,我猜测您是在使用Django框架中的admin后台进行数据管理。如果是这样,您需要在相应的ModelAdmin中设置form字段,以便使用自定义的验证器。例如:
```python
from django.contrib import admin
from django.forms import TextInput, ValidationError
from .models import YourModel
class YourModelAdmin(admin.ModelAdmin):
formfield_overrides = {
models.IntegerField: {'widget': TextInput(attrs={'type': 'number'})},
}
def formfield_for_dbfield(self, db_field, **kwargs):
formfield = super().formfield_for_dbfield(db_field, **kwargs)
if db_field.name == 'HEIGHT' and isinstance(formfield.widget, TextInput):
def validate_height(value):
if value < 100 or value > 300:
raise ValidationError('请输入正确的身高(cm)')
formfield.validators.append(validate_height)
return formfield
admin.site.register(YourModel, YourModelAdmin)
```
在这个例子中,我们在YourModelAdmin中重写了formfield_for_dbfield()方法,用来对身高字段进行验证。我们还使用了formfield_overrides字典,将IntegerField的默认widget设置为TextInput,并添加了一个type属性为number的HTML属性,这样在浏览器中会显示为数字输入框。
阅读全文