Я считаю удобным использовать AuthenticationForm Но поскольку имя пользователя нашего клиента немного запоминается, а количество нашего клиента не так много, мы хотим использовать виджет выбора на странице входа. Поэтому я использую следующий код для его достижения. Работает.Django: Это правильный способ переопределить поле формы AuthenticationForm?
from django.contrib.auth.forms import AuthenticationForm
class SignInForm(AuthenticationForm):
username = forms.ModelChoiceField(queryset=User.objects.all())
в views.py:
def post(self, request):
form = SignInForm(data=request.POST)
if form.is_valid():
login(request, form.get_user())
return HttpResponseRedirect(reverse('account:signin'))
return render(request, 'account/sign-in.html', {'form': form})
Однако, я не могу найти какой-либо подобное использование в документации. Поэтому я не уверен, правильно ли это сделать.
Я не знаю, является ли это похоже на ModelForm: https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/#overriding-the-default-field-types-or-widgets
Я хочу знать, что случилось здесь. Является ли имя пользователя, которое я объявляю в SignInForm, не позволяет AuthenticationForm генерировать свое имя пользователя, например ModelForm? Но AuthenticationForm успешно обрабатывает имя пользователя, которое я объявляю точно так же, как имя пользователя, которое оно должно было генерировать?