我是新手。 我使用Django创建餐厅系统。我想显示已插入数据库的数据(表号,食物的数量和数量)。我想显示基于客户在订购食物时生成的随机ID的数据。因此,我不知道该怎么做。
任何人都可以帮助我
我已经尝试过这些代码,但是只显示后退按钮。我无法根据数据库中的随机ID检索数据
这是我的模型。py
class OrderItem(models.Model):
Table_No = models.IntegerField(blank=False)
Item = models.TextField()
Qty = models.IntegerField(blank=False)
Price = models.TextField()
Status = models.TextField(max_length=100, null=True)
OrderId = models.TextField(max_length=100, null=True)
我的html文件:
<form action="" method="post">
{% csrf_token %}
<!--<input type="Submit" name="submit" value="See Order"/>-->
{% for order in so1 %}
<table width="800">
<tr>
<th width="800">Table Number</th>
<th width="800">Item</th>
<th width="800">Quantity</th>
<th width="800">Status</th>
<th width="800">Order Id</th>
</tr>
<tr>
<td width="800">{{ order.Table_No }}</td>
<td width="800">{{ order.Item }}</td>
<td width="800">{{ order.Qty }}</td>
<td width="800">{{ order.Status }}</td>
<td width="800">{{ order.OrderId }}</td>
</tr>
{% endfor %}
<input action="action" onclick="window.history.go(-1); return false;" type="button" value="Back" />
我的观点:
def see_order(request):
if request.method == "POST":
Table_No = request.POST.get("Table_No")
Item = request.POST.get("Item")
Qty = request.POST.get("Qty")
Status = request.POST.get("Status")
OrderId = request.POST.get("OrderId")
track_order = request.POST.get('textfield', None)
if(OrderItem.objects.get(OrderId)):
if(OrderId==OrderId):
try:
summary = OrderItem.objects.get(OrderId=track_order)
so1 = OrderItem.objects.filter(Table_No=Table_No)
so = OrderItem.objects.filter(Item=Item)
so = OrderItem.objects.filter(Qty=Qty)
so = OrderItem.objects.filter(Status=Status)
so = OrderItem.objects.filter(OrderId=OrderId)
html = ("<H1>%s</H1>", summary)
return render(request, 'restaurants/see_order.html', {'so1': so1 , 'so': so})
except OrderItem.DoesNotExist:
return HttpResponse("no such user")
else:
return render(request, 'restaurants/customer_page.html')
我希望当我输入随机ID时结果将显示表号,项目和数量。但是除了“后退”按钮外,它什么也没有显示。
答案 0 :(得分:0)
您的逻辑没有道理。
您进行了大量查询,但忽略了它们的结果-您完全不对变量进行任何操作,或者用下一个查询的结果覆盖现有变量。
例如,您得到const indexArray = [];
const bigArrayIndiciesByNameAndId = bigArray.reduce((a, { name, id }, i) => {
a[name + '_' + id] = i;
return a;
}, {});
smallArray.forEach(ele => {
const keyToFind = ele.name + '_' + ele.id;
const foundIndex = bigArrayIndiciesByNameAndId[keyToFind];
if (foundIndex) {
indexArray.push(foundIndex);
}
});
,出于某种原因(为什么不在模板中这样做)将其包装在“ h1”标签中,以获得名为summary
的变量,然后< em>完全忽略该变量。
对于其他情况,通过对html
进行过滤,然后使用基于so
的完全不同的过滤器进行覆盖,从而得到Item
,然后{ {1}},等等。
更不用说,Qty
毫无意义。
您应该删除所有无用的逻辑。由于您要按OrderId进行过滤,因此您应该这样做,然后将数据返回数据库。
Status