Django表单正在获得两种类型的用户:user A
和user B
。这些用户填写一个单独的文本字段,然后按提交按钮。
如果用户将文本字段留空并按Submit,则将引发Django的内置required
验证错误。
我的要求是要有两个不同的required
验证错误。 User A
将看到常规的required
验证错误,而user B
将看到不同的版本。
我无法实现此目的。我通过__init__
向表单类的self.user_type = kwargs.pop('user_type',None)
方法传递了一个特殊参数。但是,我似乎无法用它来覆盖required
验证错误。
为什么?因为目前required
验证错误的定义方式如下:
class TextForm(forms.Form):
text = forms.CharField(error_messages={'required':'Please write something'})
我不知道如何访问self.user_type
中可用的error_messages
才能获得我想要的东西。
更有经验的开发人员可以加入吗?预先感谢,如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
我发现实际上可以通过error_messages
通过__init__
方法访问self.fields['username'].error_messages
字典。然后,可以使用特殊参数来区分各种情况下的验证错误,例如:
def __init__(self, *args, **kwargs):
self.user_type = kwargs.pop('user_type',None)
super(TextForm, self).__init__(*args, **kwargs)
self.fields['text'].error_messages = {'required': custom_validation_err_string(utype=self.user_type)}
在给定custom_validation_err_string()
的情况下, user_type
仅返回所需的字符串。这是一个非常简单的解决方案,并且可以很好地扩展。