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


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