Как поднять ValidationError в формах django? - PullRequest
0 голосов
/ 01 августа 2020

Я хочу вызвать ошибку при отправке запроса, если сейчас есть какие-либо ошибки. Я использую clean_field в этой миссии, но получаю это исключение: элемент № 0 последовательности обновления словаря имеет длину 208; Требуется 2
Я использовал все, что могу использовать для ошибок, но, наконец, нашел подходящий способ для этой миссии, в данном случае это ValidatinError, поэтому как я могу исправить эту ошибку?

forms.py

from django.contrib.auth.forms import UserCreationForm, UserChangeForm, PasswordResetForm
from django import forms
from django.contrib.auth.models import User
from .models import UserProfile
from django.forms import ValidationError

# UserCreationForm
class SignUp(UserCreationForm):
    email = forms.EmailField(required=True)
    first_name = forms.CharField(required=True)
    last_name = forms.CharField(required=True)

    class Meta:
        model = User
        fields = ['username',
                  'first_name',
                  'last_name',
                  'password1',
                  'password2',
                  'email']

    def clean_username(self):
        data = self.cleaned_data['username']
        if User.objects.filter(username=data).exists():
            raise ValidationError('username is already exists')
        return data

    def clean_email(self):
        data = self.cleaned_data['email']
        if User.objects.filter(email=data).exists():
            raise ValidationError('email is already exists')
        return data

views.py

# User registration
class Register(CreateView):
    template_name = 'account/register.html'
    form_class = SignUp
    success_url = reverse_lazy('account:login')
...