首页 > 解决方案 > request.get 到 postgresql 的 Django 问题

问题描述

遇到这个问题,我有一个包含日期、类别和总和的表,我正在尝试进行一个查询,可以在日期之间进行选择以获取记录,但是当我选择日期时,它会尖叫“列”2020-12 -12"不存在"

视图.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})

表格.py

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

日期“2020-12-12”只是一个例子,它有这一天的记录,但仍然没有显示任何内容

标签: pythondjangodatabase

解决方案


您不需要为此使用.raw,您可以使用`.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})

注意:您可以使用@login_required装饰器 [Django-doc]将视图限制为经过身份验证的用户的视图 。


推荐阅读