Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django字段中的用户定义验证程序_Python_Django - Fatal编程技术网

Python Django字段中的用户定义验证程序

Python Django字段中的用户定义验证程序,python,django,Python,Django,Django允许您定义模型字段的验证器,如下所示: field = models.CharField(..,validators=[],..) 如果我允许用户将验证器附加到字段,那么最好的方法是什么 例如,假设用户希望在此字段中应用RegexValidator,其中regex参数由他们定义。我怎样才能做到这种行为 谢谢。在单独的字段中用逗号分隔的名称列表和包装器属性如何,例如: import django.core.validators as validator_module # Build

Django允许您定义模型字段的验证器,如下所示:

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,我还需要传递最小值,与实际值进行比较。没有?我想我得把元组作为用户的输入。