簡體   English   中英

在 django 的視圖中使用查詢未從 mysql 獲得結果

[英]Not getting results from mysql using query in views in django

我正在使用 MySQL 數據庫,並嘗試根據日期過濾數據,但在使用過濾器時我什么也沒得到。雖然我取消注釋這一行

打印(搜索結果。日期)

然后它會顯示錯誤500。

這是我的觀點.py

from sales.model import Mar21

def show(request):
    if request.method == 'POST':
        fromdate = request.POST.get('startdate')
        todate = request.POST.get('todate')
        # date = Mar21.objects.only('Date')
        print(fromdate)
        print(todate)
        searchresult = Mar21.objects.filter(date__lte = fromdate,date__gte = todate)
        # print(searchresult.Date)
        return render(request,'front.html',{'data':searchresult})  
    else:
        data = Mar21.objects.all()   
        # print(data)
        return render(request,"front.html",{'data':data})   

這是我的 model

from django.db import models


class Mar21(models.Model):
    id = models.IntegerField(db_column='Id', blank=True, null=True)  # Field name made lowercase.
    date = models.DateField(db_column='Date', blank=True, null=True)  # Field name made lowercase.
    sales_channel = models.TextField(db_column='Sales Channel', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    sales_order_id = models.FloatField(db_column='Sales order ID', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    ship_to_name = models.TextField(db_column='Ship to name', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    sku = models.TextField(db_column='SKU', blank=True, null=True)  # Field name made lowercase.
    normal_sku = models.TextField(db_column='Normal SKU', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    vendor = models.TextField(db_column='Vendor', blank=True, null=True)  # Field name made lowercase.
    quantity = models.BigIntegerField(db_column='Quantity', blank=True, null=True)  # Field name made lowercase.
    line_total = models.FloatField(db_column='Line Total', blank=True, null=True)  # Field name made lowercase. Field renamed to remove unsuitable characters.
    channel_order_id = models.TextField(db_column='channel order id', blank=True, null=True)  # Field renamed to remove unsuitable characters.

    class Meta:
        managed = False
        db_table = 'mar21'

這是我的 html 代碼

<html>
    <head>
        <title>Sales Dashboard</title>
    </head>
    <body>
        <center>
            <form method="POST">
                {% csrf_token %}
                From :<input type="date" name="startdate"/>
                To :<input type="date" name="todate"/>
                <input type="submit" name="search">
            
                <hr>
            <table>
                <tr>

問題出在您的過濾器中,因為表達式 fromdate <= DATE 和 todate >= DATE a 是一個邏輯錯誤

從這個意義上說,我建議你這樣做。

searchresult = Mar21.objects.filter(date__range=(from_date, to_date))

# or you can reverse your filter
searchresult = Mar21.objects.filter(date__gte=from_date, date__lte=to_date)

# or use an expression
from django.db.models import Q
searchresult = Mar21.objects.filter(Q(date__gte=from_date) & Q(date__lte=to_date))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM