英文:
How to check if a date is still less than 5 days in django query?
问题
我尝试检查订单创建日期是否仍然少于5天,然后我想显示一个新订单
文本。
这是我尝试实现这一点的方式:
def vendor_orders(request):
five_days = datetime.now() + timedelta(days=5)
new_orders = CartOrder.objects.filter(payment_status="paid", date__lte=five_days).order_by("-id")
这会返回数据库中所有日期少于5天的订单,这意味着所有订单,包括旧订单和新订单,都会被返回,这不是我期望的结果。如果我手动创建一个订单并将日期手动设置为未来的某个日期,比如七月或八月,它不会返回该订单。
请问我该如何处理这个逻辑?我想要的只是如果订单创建日期还没有超过5天,就将其显示为新订单。
模板更新:
我想要检查订单是否是新订单,然后显示一个新徽章。
Views.py:
@login_required
def vendor_orders(request):
five_days = datetime.now() - timedelta(days=5) # 这是5天前
new_order = CartOrder.objects.filter(payment_status="paid", vendor=request.user.vendor, date__gte=five_days).order_by("-id")
order = CartOrder.objects.filter(payment_status="paid", vendor=request.user.vendor).order_by("-id")
context = {
"order": order,
"five_days": five_days,
"new_order": new_order,
}
return render(request, "vendor/vendor-order.html", context)
{% for o in order %}
<tr>
<th scope="row">#{{o.oid}} <span class="badge">{% if o.date > five_days %}New{% endif %}</span></th>
<th scope="row"><a href="{% url 'vendor:order-detail' o.oid %}" class="btn btn-primary">View Order</a></th>
<td>{{o.date}}</td>
</tr>
{% endfor %}
英文:
I am trying to check if the date an order was created is still less than 5 days, then i want to display a New Order
Text.
This is how i have tried doing this
def vendor_orders(request):
five_days = datetime.now() + timedelta(days=5)
new_orders = CartOrder.objects.filter(payment_status="paid", date__lte=five_days).order_by("-id")
This is returning all the orders in the database that the date is less than 5 days, which means all orders both old and new are being returned and this is not what i am expecting.
If i manually create an order and set the date manually to some date in the future e.g July or August, it does not return that order.
Please how can i go about this logic? all i want to do is display an order as new orders if the date which the order was created is not yet older than 5 days.
Template Update
i want to check if the order is a new order then i display a new badge
Views.py
@login_required
def vendor_orders(request):
five_days = datetime.now() - timedelta(days=5) # this is 5 days ago
new_order = CartOrder.objects.filter(payment_status="paid", vendor=request.user.vendor, date__gte=five_days).order_by("-id")
order = CartOrder.objects.filter(payment_status="paid", vendor=request.user.vendor).order_by("-id")
context = {
"order":order,
"five_days":five_days,
"new_order":new_order,
}
return render(request, "vendor/vendor-order.html", context)
{% for o in order %}
<tr>
<th scope="row">#{{o.oid}} <span class="badge">{% if o.date > five_days %}New{% endif %}</span></th>
<th scope="row"><a href="{% url 'vendor:order-detail' o.oid %}" class="btn btn-primary">View Order</a></th>
<td>{{o.date}}</td>
</tr>
{% endfor %}
答案1
得分: 1
如果我理解正确,我认为这是你想要的。
def vendor_orders(request):
five_days = datetime.now() - timedelta(days=5) #5天前的日期
#日期大于5天前的订单
new_orders = CartOrder.objects.filter(payment_status="paid", date__gte=five_days).order_by("-id")
英文:
If I understand correctly, I think this is what you want.
def vendor_orders(request):
five_days = datetime.now() - timedelta(days=5) #5 days ago
#orders with a date greater than the date 5 days ago
new_orders = CartOrder.objects.filter(payment_status="paid", date__gte=five_days).order_by("-id")
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论