pythondjangodatabasepostgresql

Django problem with request.get to postgresql


Getting stuck with this issue, I've got a table that has date, category and sum and I'm trying to make a query that can choose between dates to get records, but when i pick dates it screams "column "2020-12-12" does not exist"

views.py

def outgoings_history(request):
    if request.method == "POST":
        date_from= request.POST.get('date_from')
        date_to= request.POST.get('date_to')
        search_result = Outgoings.objects.filter(user=request.user).order_by('-date')\
            .raw('SELECT suma, kategoria, date FROM outgoings WHERE date BETWEEN "2020-12-12" AND "2020-12-12"')
        return render(request, 'outgoings_history.html', {'data': search_result})
    else:
        displaydata = Outgoings.objects.filter(user=request.user).order_by('-date')
        return render(request, 'outgoings_history.html', {'data': displaydata})

forms.py

class PickADate(forms.Form):
date_from= forms.DateField(widget=DateInput())
date_to= forms.DateField(widget=DateInput())[enter image description here][1]

The date '2020-12-12' is just a example and it has records this day but still doesn't show anything


Solution

  • You don't need to use .raw for this, you can use a `.filter():

    from django.contrib.auth.decorators import login_required
    
    @login_required
    def outgoings_history(request):
        search_result = Outgoings.objects.filter(
            user=request.user,
        ).order_by('-date')
        if request.method == 'POST':
            form = PickADate(request.POST)
            if form.is_valid():
                date_from = form.cleaned_data['date_from']
                date_to = form.cleaned_data['date_to']
                search_result = search_results.filter(
                    date__range=(date_from, date_to)
                )
        return render(request, 'outgoings_history.html', {'data': search_result})

    Note: You can limit views to a view to authenticated users with the @login_required decorator [Django-doc].