Chidananda Nayak
Chidananda Nayak

Reputation: 1201

TypeError: is_valid() missing 1 required positional argument: 'self'

if RegistrationForm.is_valid() and employeeForm.is_valid(): TypeError: is_valid() missing 1 required positional argument: 'self'

I'm having this error, to which I cannot find the source. Where am I missing something?

@transaction.atomic
def create_view(request):
    if request.method == 'POST':
        user_form = RegistrationForm(request.POST)
        profile_form = employeeForm(request.POST or None,request.FILES or None)
        if RegistrationForm.is_valid() and employeeForm.is_valid():
            user = RegistrationForm.save()
            user.refresh_from_db()
            profile_form = employeeForm(request.POST, instance=user.employeemodel)

            profile_form.full_clean()
            profile_form.save()
            return redirect('emp_list')
    else:
        user_form = RegistrationForm()
        profile_form = employeeForm()
    return render(request,'create_employee.html',{'userform':user_form,'profileform':profile_form})

Upvotes: 0

Views: 1928

Answers (1)

neverwalkaloner
neverwalkaloner

Reputation: 47364

Instead of class objects you should use instance objects when working with forms. So it should be user_form.is_valid() and profile_form.is_valid()

user_form = RegistrationForm(request.POST)
profile_form = employeeForm(request.POST or None,request.FILES or None)
if user_form.is_valid() and profile_form.is_valid():
    user = user_form.save()
    user.refresh_from_db()
    profile_form = employeeForm(request.POST, instance=user.employeemodel)
    profile_form.full_clean()
    profile_form.save()
    return redirect('emp_list')

Same for the save() method: user = user_form.save()

Upvotes: 2

Related Questions