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