[英]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.