大学生が宅配食品を注文できるウェブサイトを構築しています。私たちのサイトの特別な属性の 1 つは、顧客があらかじめ設定された配達時間を選択する必要があることです。たとえば、午後 7 時、午後 10 時、深夜にドロップします。
食品に関するすべての情報 (つまり、価格、説明、名前) は静的です。ただし、その特定のドロップ時間の残りの数量は除きます。
明らかに、メニュー ページのすべての食品の HTML をハードコーディングしたくなかったので、html テンプレートに forloop を記述しました。したがって、特定の時間に残っている数量をモデルのどこかに保存する必要があります。唯一の問題は、同じ変数を使用して残りの数量をテンプレートに転送すると、多くの人が同時にメニュー ページにアクセスしている場合に間違った情報が表示されるのではないかと心配していることです。
たとえば、午後 7 時のドロップでブリトーが 10 個残っているとします。午後 10 時のドロップには 40 のブリトーがあります。誰かが他の顧客よりも高速なインターネットを使用している場合、間違った残量が表示される可能性はありますか?
皆さんは、この問題を解決するためにどのように行動しますか? 基本的に、その特定の時間の残りの数量をテンプレートに伝える方法が必要です。そして、私が今持っているソリューションを使用しても、安心できません。多くの人が同時にサイトにアクセスする場合は特に注意してください。
view.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-->