0

I'm trying to make a function based form for taking input from the user to create a customer table. I'm using a function based form but when I use form.is_valid() it's returning False.

def customer(request):
    form = customerForm(request.POST or None )
    print(form)
    context = {'form':form}
    if form.is_valid():
        mobile_no = form.cleaned_data["mobile_no"]
        print("mobile_no")
        object = Customer.objects.get(mobile_no=mobile_no)
        if(object is not None):
            invoice_no = Bill.objects.all().count()
            obj = Bill.objects.create(customer_info=object,invoice_no=invoice_no+1,shop_details=ShopDetail.objects.all())
            return redirect(reverse('receipt:create-bill',kwargs = {'pk':obj.pk}))
    return HttpResponse("<h1>Form invalid</h1>")#redirect(reverse_lazy("home"))
M.javid
  • 6,387
  • 3
  • 41
  • 56

1 Answers1

0

Maybe you sets submiting form method as GET but in function set form data by request.POST You must set method attribute of html form tag to post and change your function as below:

def customer(request):
    form = customerForm()
    if request.method.lower() == 'post':
        form = customerForm(request.POST or None )
        print(form)
        context = {'form':form}
        if form.is_valid():
            mobile_no = form.cleaned_data["mobile_no"]
            print("mobile_no")
            object = Customer.objects.get(mobile_no=mobile_no)
            if(object is not None):
                invoice_no = Bill.objects.all().count()
                obj = Bill.objects.create(customer_info=object,invoice_no=invoice_no+1,shop_details=ShopDetail.objects.all())
                return redirect(reverse('receipt:create-bill',kwargs = {'pk':obj.pk}))
        return HttpResponse("<h1>Form invalid</h1>")  # redirect(reverse_lazy("home"))
    return render('my_template.html', context=context)
M.javid
  • 6,387
  • 3
  • 41
  • 56