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

时间:2019-04-23 14:26:46

标签: django django-forms django-validation

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

是否可以在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 [field](表单的一个字段)

请先谢谢您,如果这个问题很愚蠢,就对不起。

1 个答案:

答案 0 :(得分:1)

由于要将验证器添加到特定字段,因此可以覆盖该字段的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