我有一个用户可以输入的表单,我想测试验证。用户将输入一个名为Project Name
的字段,我想检查数据库中是否已存在该值。如果是,则发出警告。这是我的代码:
views.py
if form.is_valid():
team_profile = get_object_or_None(Team, Team_ID=profile.team_id)
return render(request,'teams/my_team.html', {'team_profile': team_profile})
else:
return render(request,"teams/team_form.html", {'form':CreateTeamForm()})
models.py
def validate_id_exists(value):
incident = Team.objects.filter(Project_name=value)
if incident: # check if any object exists
raise ValidationError('This already exists not exist.')
class Team(models.Model):
Project_name = models.CharField(max_length=250, validators=[validate_id_exists])
目前,如果用户输入已存在的project_name
,则会导致表单无效。但是,我不知道,如何在屏幕上显示错误消息。目前,如果我使用已经存在的project_name
提交,它将返回原始形式,根据我写的内容是有意义的。但是,我希望在表单页面上显示错误消息。
有什么想法吗?
答案 0 :(得分:2)
您必须使用以下方式在模板中打印非字段错误:
{{ form.non_field_errors }}
答案 1 :(得分:1)
您必须返回无效表单:
//views.py
form = CreateTeamForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
team_profile = get_object_or_None(Team, Team_ID=profile.team_id)
else:
print form.errors
return render(request,"teams/team_form.html", {'form': form})
forms.py
def validate_project_name(value):
incident = Team.objects.filter(Project_name=value)
if incident: # check if any object exists
raise ValidationError('This already exists not exist.')
return value