在 Django 中将 ProhibitNullCharactersValidator 动态添加到表单的 __init__ 中。需要建议

Dynamically add ProhibitNullCharactersValidator into the form's __init__ in Django. Need an advice

对于知道答案的人来说,这是一个非常简单的问题。

是否可以在 froms init 中将验证器动态添加到表单字段???

我想做这样的事情:


class SomeForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.pk = kwargs.pop("pk", None)
        forms.ModelForm.__init__(self, *args, **kwargs)

        if self.pk == some integer:
    self.fields[field].validator(s)……..  # and I don’t know what to type here
        else:
    do something else…

目标是根据 self.pk 动态添加 ProhibitNullCharactersValidator 到 self.fields[字段](表单的一个字段)

提前谢谢你,如果这个问题很愚蠢,我很抱歉。

由于您想将验证器添加到特定字段,您可以重写该字段的 clean_ 方法,并在那里调用验证器。

class SomeForm(forms.ModelForm):
    def clean_myfield(self):
        value = self.cleaned_data.get('myfield')
        if self.instance.pk == some_value:
            ProhibitNullCharactersValidator(value)
        return value