我正在建立一个网站,大学生可以在其中订购外卖食品。我们网站的一个特殊属性是客户必须选择预设的交货时间。例如,我们在晚上 7 点、晚上 10 点和午夜有一个下降。
关于食物的所有信息都是静态的(即价格、描述、名称),除了特定投放时间的剩余数量。
显然我不想为我的菜单页面上的所有食物项目硬编码 HTML,所以我在 html 模板中编写了一个 forloop。所以我需要将特定时间剩余的数量存储在我的模型中的某个地方。唯一的问题是我害怕如果我使用相同的变量将剩余数量传输到我的模板,如果很多人同时访问菜单页面,我会给出错误的信息。
例如,假设晚上 7 点下降了 10 个墨西哥卷饼。晚上 10 点下降有 40 个墨西哥卷饼。如果某人的互联网速度比其他客户更快,是否有可能显示错误的剩余数量?
你们将如何解决这个问题?我基本上需要一种方法来告诉我的模板该特定时间剩余的数量。并且使用我现在拥有的解决方案,并没有让我感到安心。特别是如果有很多人要同时访问该站点。
视图.py
orders = OrderItem.objects.filter(date__range=[now - timedelta(hours=20), now]).filter(time=hour)
steak_and_egg = 0
queso = 0
for food in orders:
if food.product.name == "Steak and Egg Burrito":
steak_and_egg = steak_and_egg + food.quantity
elif food.product.name == "Queso Burrito":
queso = queso + food.quantity
#if burritos are sold out, then tell template not to display "buy" link
quantity_steak_and_egg = max_cotixan_steak_and_egg - steak_and_egg
quantity_queso = max_cotixan_queso - queso
#psuedocode
steakandegg.quantity_remaining = quantity_steak_and_egg
queso.quantity_remaining = quantity_queso
HTML:
{% for item in food %}
<div id="food_set">
<img src="{{item.photo_menu.url}}" alt="" id="thumbnail photo" />
<div style='overflow:hidden'>
<p id="food_name">{{item.name}}</p>
<p id="price">${{item.price}}</p>
</div>
<p id="food_restaurant">By {{item.restaurant}}</p>
<div id="food_footer">
<img src="{{MEDIA_URL}}/images/order_dots.png" alt="" id="order_dots" />
<a id ="order_button" href="{{item.slug}}"></a>
<p id="quantity_remaining">{{item.quantity_remaining}} left</p>
</div><!-- end food_footer-->
</div><!-- end food_set-->