Python Django字段中的用户定义验证程序
Django允许您定义模型字段的验证器,如下所示:Python Django字段中的用户定义验证程序,python,django,Python,Django,Django允许您定义模型字段的验证器,如下所示: field = models.CharField(..,validators=[],..) 如果我允许用户将验证器附加到字段,那么最好的方法是什么 例如,假设用户希望在此字段中应用RegexValidator,其中regex参数由他们定义。我怎样才能做到这种行为 谢谢。在单独的字段中用逗号分隔的名称列表和包装器属性如何,例如: import django.core.validators as validator_module # Build
field = models.CharField(..,validators=[],..)
如果我允许用户将验证器附加到字段,那么最好的方法是什么
例如,假设用户希望在此字段中应用RegexValidator,其中regex参数由他们定义。我怎样才能做到这种行为
谢谢。在单独的字段中用逗号分隔的名称列表和包装器属性如何,例如:
import django.core.validators as validator_module
# Build a map of available validators. This code is not foolproof
# and might be better as a static dict, but it gives the idea.
validator_map = {}
for name, obj in validator_module.__dict__.items():
if name.startswith('validate') pr name.endswith('Validator'):
validator_map[name] = obj
class MyModel(Model):
value = CharField()
value_validators = TextField()
def set_value(self, value):
'Run validators and store the value'
vnames = self.value_validators.split(',')
for vname in vnames:
validator = validator_map[vname]
validator(value)
self.value = value
谢谢,可以用的!如何将参数传递给验证器?例如,如果它是MinLengthValidator,我还需要传递最小值,与实际值进行比较。没有?我想我得把元组作为用户的输入。