首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ValidationError

Django ValidationError
EN

Stack Overflow用户
提问于 2017-02-20 09:18:30
回答 2查看 802关注 0票数 0

我有一个表单,用户可以输入,我想测试验证。用户将输入一个名为Project Name的字段,我想检查这个值在数据库中是否已经存在。如果是,则发出警告。下面是我的代码:

views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
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提交,它会返回到原始表单,根据我所写的内容,这是有意义的。但是,我希望在停留在表单页的同时显示错误消息。有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-20 10:04:31

您必须返回无效的表单:

代码语言:javascript
复制
//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

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2017-02-20 09:22:29

您必须使用以下命令在模板中打印非字段错误:

代码语言:javascript
复制
{{ form.non_field_errors }}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42335038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档