Проблема со стилизацией полей формы django при возникновении ошибок

У меня есть ошибка, которую я пытаюсь исправить уже несколько месяцев, но никак не могу понять. Я создаю сайт на Django. На сайте есть форма, в которой, помимо прочих полей, есть поле для ввода имени (называется "nombre") и поле для фамилии (называется "apellido") пользователя. Я объявил CSS-правило (применяется к полям с классом "error"), которое придает определенный стиль полям, не прошедшим проверку формы, выделяя их красным цветом. В файле "forms.py" я написал код, который присваивает класс "error" полям, не прошедшим валидацию. Проблема в том, что, когда я ввожу недопустимые данные в поле "apellido" и пытаюсь отправить форму, оба поля "apellido" и "nombre" подсвечиваются красным. Я понятия не имею, почему это может происходить. Полагаю, что дело в файле "forms.py", где я присваиваю класс "error" недействительным полям. Вот код файла "forms.py":

from django import forms
from .models import Turno

class TurnoForm(forms.ModelForm):
    
class Meta:
    model = Turno
    fields = ['nombre', 'apellido', 'email', 'fecha', 'hora']
    widgets = {
        "nombre": forms.TextInput(attrs={"class": "form-control", "name": "nombre"}),
        "apellido": forms.TextInput(attrs={"class": "form-control", "name": "apellido"}),
        "email": forms.EmailInput(attrs={"class": "form-control", "name": "email"}),
    }
            
def clean_nombre(self):
    nombre = self.cleaned_data["nombre"]

    if not nombre.isalpha():
        self.fields["nombre"].widget.attrs["class"] += " error"
        raise forms.ValidationError("Por favor, ingrese solo caracteres alfabéticos", code="carac_esp")
        
    
    return nombre

def clean_apellido(self):
    """
    El fallo está en este campo. Al completarlo erróneamente se marca también el campo de "nombre" como incorrecto.
    """
    apellido = self.cleaned_data["apellido"]

    if not apellido.isalpha():
        self.fields["apellido"].widget.attrs["class"] += " error"
        raise forms.ValidationError("Por favor, ingrese solo caracteres alfabéticos", code="carac_esp")
    
    return apellido

Как вы думаете, проблема где-то здесь?

Вернуться на верх