2017-02-20 19 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

関連する問題