Если вы хотите получить доступ к request.POST
данным в __init__
формы, вам необходимо явно указать request
при создании экземпляра формы. И вам нужно удалить int из kwargs перед вызовом super()
, потому что в противном случае возникнет ошибка, связанная с неожиданным ключевым словом. Итак, по вашему мнению, что-то вроде
form = AppUserAuthForm(initial={'username': username}, request=request)
и в форме __init__
:
def __init__(self, *args, **kwargs):
request = kwargs.pop('request')
super().__init__(*args, **kwargs)
user_id = request.POST.get('user_id')
# Your other code
Однако, поскольку вы используете ModelForm, почему бы не использовать возможности ModelForm, а не делать все это вручную?
Ваше мнение может быть
if AppUser.objects.filter(stu_id=dstu_id).exists():
u=AppUser.objects.get(stur_id=stu_id)
form = AppUserAuthForm(instance=u)
else:
form = AppuserAuthForm()
и ваша форма __init__
:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.pk:
self.fields['username'].disabled = True