2017-12-05 9 views
0

マイforms.pyを明確にするために...「username already exists」メッセージをカスタマイズするにはどうすればよいですか?

class RegisterForm(UserCreationForm): 
error_messages= { 
    "password_mismatch": _("Passwords do not match."), 
} 

をカスタムユーザー作成クラスを持って、私はerror_messagesキーは、ユーザーがすでにユーザー名にサインアップしようとするとDjangoは出してくれる1に対応しているかわかりません存在する。ユーザーが既に存在するユーザー名を選択した場合、どのエラーメッセージを置き換える必要がありますか?

+0

を[このSO質疑応答](https://stackoverflow.com/questions/22264368/how-to-override-djangoカスタムのユーザ変更のためのユニークエラーメッセージ)は少し古く、新しいDjangoのバージョンではおそらく '' unique'''がオーバーライドできます。しかしそうでなければ、その質問に対する答えを見てください。また、関連するブログポスト(詳細はこのソリューションを参照)はhttp://cheng.logdown.com/posts/2015/05/25/django-customize-error-messages-on-the-user-registration-フォーム – Evert

+0

@Evert私はあなたがリンクしたブログ投稿の方法を使用しました。ありがとう。 – Username

+0

リンクされた質問の最後の答えは「ユニーク」と書かれていますが、フォームで上書きできることに注意してください。それは2017年8月の日付なので、半年よりも少なく、他の回答よりも最新のようです。 – Evert

答えて

0

たぶんclean_username()メソッドをオーバーライドして、独自のERROR_MESSAGE電源:

error_messages= { 

"password_mismatch": _("Passwords do not match."), 

"username_exists": _("Username already present`")} 



def clean_username(self): 
    username = self.cleaned_data.get("username") 

    try: 
     User._default_manager.get(username=username) 
     #if the user exists, then let's raise an error message 

     raise forms.ValidationError( 
      self.error_messages['username_exists'], #my error message 

      code='username_exists', #set the error message key 

      ) 
    except User.DoesNotExist: 
     return username # if user does not exist so we can continue the registration process 
関連する問題