Django: Как использовать User ModelForm для входа в систему?
Я пытаюсь использовать модельФормы для входа в систему, а не Форму (чтобы избежать повторений):
class LoginForm(forms.ModelForm):
class Meta:
model = get_user_model()
widgets = {
"password": forms.PasswordInput(),
}
fields = ("email", "password")
Однако, поскольку поле email имеет unique=True
, и поскольку формы могут быть использованы для создания объектов, при выполнении метода is_valid()
на форме я получаю ошибку: User with this E-mail already exists
.
Какой правильный способ справиться с этим? Спасибо.
Мое предположение заключается в том, что вы используете общее представление, и поэтому представление вызывает метод save()
на LoginForm, а поскольку LoginForm является ModelForm, она пытается сохранить пользователя в базе данных, поэтому у вас и возникла эта ошибка.
Вы можете переопределить метод save()
на вашей форме и просто pass
, чтобы ничего не сохранялось
Или (еще лучше) вы можете просто использовать LoginView из django и установить USERNAME_FIELD в вашей модели User. Таким образом, вам не нужно будет создавать свою собственную LoginForm