как сделать динамическое сообщение об ошибке c в форме django - PullRequest
0 голосов
/ 01 августа 2020

У меня это есть в моем файле forms.py

from django import forms
from django.utils.translation import gettext as _
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User 


class CreateUserForm(UserCreationForm):
    password2 = forms.CharField(
    label=_("Confirm password"),
    widget=forms.PasswordInput(attrs={'autocomplete': 'new-password'}),
    strip=False,
    help_text=_("Enter the same password as before, for verification."),
    )
    
    class Meta:
        model = User
        fields = ['username','email','first_name','last_name','password1','password2']
        error_messages = {
            'username': {
                'unique': 'user already exist',
            },
        }

Я не хочу отображать сообщение об ошибке c Dynami, когда пользователь регистрируется с существующим именем пользователя. Например, мой суперпользователь называется «admin», если suer пытается зарегистрироваться с именем пользователя «admin», я хочу показать ему сообщение об ошибке в конце формы, например:

user with the username 'admin' already exist

вместо стандартного c сообщения:

user already exist

Итак, как я могу это сделать ??

1 Ответ

0 голосов
/ 01 августа 2020
def clean(self, *args, **kwargs):
   cleaned_data = self.cleaned_data
   if User.objects.filter(username = cleaned_data.get('username')).exists():
      raise forms.ValidationError("Username already exists")

Определите этот чистый метод в форме. Он вызовет ошибку при вызове функции is_valid в форме из представлений

Подробнее об этом здесь https://docs.djangoproject.com/en/3.0/ref/forms/validation/

...