0

I am trying to pass user data from one template inside of another template. For this I use an ajax request, as well explained here How do I integrate Ajax with Django applications?

although no error shows up, nothing gets pulled.

here is what my model formset view look like inside of template 1:

def New_Sales(request):
    #context = {}
    form = modelformset_factory(historical_recent_data, fields=('id','Id', 'Date','Quantity', 'NetAmount', 'customer_name'))
    
    
    if request.method == 'GET':
        formset = form(queryset= historical_recent_data.objects.none())
        #blank_form = formset.empty_form
    elif request.method == 'POST':
        formset = form(request.POST)
        #blank_form = formset.empty_form
        if formset.is_valid():
            request.session['sale'] = request.POST.get('sale')
            
            
            
            
            
            for check_form in formset:
                check_form.save()
            
                quantity = check_form.cleaned_data.get('Quantity')
                id = check_form.cleaned_data.get('Id')
                update = replenishment.objects.filter(Id = id).update(StockOnHand = F('StockOnHand') - quantity)
                update2 = Item2.objects.filter(reference = id).update(stock_reel = F('stock_reel') - quantity)
                
            
            
        
            return redirect('/invoice/pdf/assembly/') 
    
    #else:
        #form = form(queryset= historical_recent_data.objects.none())
        
    
    
    return render(request, 'new_sale.html', {'formset':formset})

and here is the view to access template 1 data into template 2:

def generate_pdf_assembly(request):
    my_company = MyCompany.objects.get(id = 1)
    
    request = request.session.get('sale')
    context = {'request' : request, 'my_company' : my_company }
    print(context)

and here is the ajax request to access the data from the template (in template 2):

<h3> {{ context }} </h3>

<script>
        
            $.ajax({
                method: "GET",
                url: "/new_sale.html", 
                sucess: function(context){
                    alert(context);
                },
                failure: function(context){
                    alert('got an error');
                    
                }
            });
            
        
    </script>

I feel like there must be an issue with the request.session in the view since no evident error gets outputed neither in log nor chrome console but I am not competent to debug it further at this point.

UPDATE: after changing context for request in tag template, the value None shows up, definitely an issue with the requesting

Murcielago
  • 905
  • 1
  • 8
  • 30

1 Answers1

0
def username_exists(request):
data = {'msg':''}   
if request.method == 'GET':
    username = request.GET.get('username').lower()
    exists = Usernames.objects.filter(name=username).exists()
    if exists:
        data['msg'] = username + ' already exists.'
    else:
        data['msg'] = username + ' does not exists.'`enter code here`
return JsonResponse(data)
  • alif thanks for your response, could you please tell me more on how that would help me? – Murcielago Nov 01 '20 at 18:39
  • Hi, Welcome to Stack Overflow. While this may answer the question, it is better to include the essential parts of the answer like what does this code do and how it should be used. – Qeek Nov 01 '20 at 21:09