目前,我正在开发一个使用ReactJS,Redux和Django的项目。我有一个ReduxForm用于注册。
<h3>Company's basic information</h3>
<Field
// Redux form props
name="name"
component={renderTextField}
label="Company's Name"
// Custom props
required={true}
type="text"
placeholder="Company's Name..."
onBlur={this.handleFieldsChange.bind(this)}
/>
所以单个字段看起来就像那样。 提交表单时,信息将发送到Django进行存储。我不确定这两者之间的验证是如何起作用的。 我想要做的是检查公司是否存在该名称。
Organization.objects.filter(company_name=name)
所以我这样做,我能够看到它是否存在。
如果是,那么我想让用户知道他们不能有相同的名字。 这是我不确定如何使这项工作的地方。 我做了类似
的事情raise ValidationError({'name': ["A company named '%s' already exists" % name,]})
但是,这只会使表单不提交。验证错误仅出现在日志中。
也许有人可以指出我正确的方向。
答案 0 :(得分:0)
对我来说,事实证明问题是引发ValidationError的位置。我在模型中使用保存功能。我需要做的是将它移动到组织序列化器。 而且,而不仅仅是
raise ValidationError({'name': ["A company named '%s' already exists" % name,]})
我把它改成了
raise serializers.ValidationError({'name': "A company named '%s' already exists" % name })
现在看来,当某个组织已经存在此名称时,它会显示在带有此消息的字段下。