Если вы хотите придерживаться ModelForm
, вы можете переопределить метод validate_unique
, который выглядит следующим образом:
def validate_unique(self):
"""
Calls the instance's validate_unique() method and updates the form's
validation errors if any were raised.
"""
exclude = self._get_validation_exclusions()
try:
self.instance.validate_unique(exclude=exclude)
except ValidationError as e:
self._update_errors(e)
Однако вам, вероятно, лучше просто создать обычную форму, потому чтоэто будет служить вашей цели просто отлично. Переопределение функции validate_unique
в этом случае не будет кодом очистки IMO.
EDIT : лучшим решением будет переопределение метода очистки без вызова super
. Из исходного кода в методе BaseModelForm
__init__
:
# self._validate_unique will be set to True by BaseModelForm.clean().
# It is False by default so overriding self.clean() and failing to call
# super will stop validate_unique from being called.
Так вот как должна выглядеть ваша форма:
class FacebookLoginForm(ModelForm):
class Meta:
model = Client
fields = ['facebook_id', 'first_name', 'last_name', 'email']
def clean(self):
return self.cleaned_data