/ / Conflito de validação de formulário do Django - django, formulários, validação, modelo

Django Form Validation Conflict - django, formulários, validação, modelo

Algo estranho está acontecendo. Digamos que tenho um campo definido como:

Project_name = models.CharField(max_length=250, unique=True)

assim Project_name deve ter um valor único, caso contrário, ele gerará um erro. Então, quero adicionar outra verificação de validação. forms.py

def clean(self):
data = self.cleaned_data
if data["team_member2"] == data["team_member3"]:
raise ValidationError("Can"t have duplicate team members")

No entanto, depois de adicionar essa função, o unique operador para de trabalhar por algum motivo. Alguma ideia?

Respostas:

1 para resposta № 1

Você não está chamando clean método de superclasse enquanto sobrescreve.

Tente isto:

def clean(self):
data =  super(FormClass, self).clean()
if data["team_member2"] == data["team_member3"]:
raise ValidationError("Can"t have duplicate team members")
return data

A partir de documentação:

A chamada para super (ContactForm, self) .clean () no código de exemplo garante que qualquer lógica de validação nas classes pai seja mantida.