2017-12-05 5 views
0

Mein forms.py hat eine benutzerdefinierte-creation Klasse ...Wie kann ich die Nachricht "Benutzername ist bereits vorhanden" anpassen?

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

Um zu klären, ich weiß nicht, welche error_messages Schlüssel entspricht dem Django ausspuckt, wenn ein Benutzer mit einem Benutzernamen anzumelden versucht, die bereits existiert. Welche Fehlermeldung muss ersetzt werden, wenn der Benutzer einen bereits vorhandenen Benutzernamen auswählt?

+0

[Diese Frage SO & Antwort] (https://stackoverflow.com/questions/22264368/how-to-override-django -unique-error-message-for-Benutzername-in-custom-userchangef) sind ein bisschen alt: vielleicht "unique" kann in neueren Django-Versionen überschrieben werden. Aber ansonsten, siehe die Antwort auf diese Frage. Ein dazugehöriger Blogpost mit weiteren Details (in Bezug auf diese Lösung) finden Sie unter http://cheng.logdown.com/posts/2015/05/25/djang-customize-error-messages-on-the-user-registration- form – Evert

+0

@Evert Ich habe die Methode aus dem Blog Post verwendet, den du verlinkt hast. Vielen Dank. – Username

+0

Beachten Sie, dass die letzte Antwort in der verknüpften Frage "einzigartig" in Formularen überschrieben werden kann; Es ist vom August 2017 datiert, also weniger als ein halbes Jahr alt, und scheint aktueller zu sein als die anderen Antworten. – Evert

Antwort

0

Vielleicht die clean_username() -Methode außer Kraft setzen und die eigene error_message Versorgung:

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 
Verwandte Themen