2017-02-20 51 views
0

我有一個表單,用戶可以輸入,我想測試驗證。用戶將輸入一個名爲Project Name的字段,並且我想檢查數據庫中是否存在此值。如果是,則發出警告。這裏是我的代碼:Django ValidationError

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,它會回到原來的形式,根據我寫的內容有意義。但是,我想在顯示頁面上顯示錯誤消息。 任何想法?

回答

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 
2

你必須使用打印模板中的您的非現場錯誤:

{{ form.non_field_errors }} 
+0

如何?我對我的看法有什麼要求嗎? – anderish

+0

是在表單中添加您的模板答案中提到的模板標籤。 – turbotux

相關問題