У меня есть приложение, которое имеет дело с пользователями, делающими заказ, но каждый раз, когда заказ делается, его необходимо утвердить, прежде чем он может быть выпущен или продан. Есть ли способ подсчитать, сколько раз заказ был одобрен?
модели
class Order(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
pro_name = models.ForeignKey(Product, on_delete=models.CASCADE, null=True,related_name='product')
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
order_quantity = models.PositiveIntegerField(null=True)
order_status = models.IntegerField(default=0)
timestamp = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
просмотры.py
def order_approve(request, order_id):
order = Order.objects.get(id=order_id)
order.order_status = 1
order.save()
return redirect('dashboard-order')
Буду признателен за ваш ответ. Спасибо
@DevangSanghani как, пожалуйста?
Где бы в коде ни вызывалась эта функция, увеличивайте счетчик.
Если вы хотите получить общее количество одобренных заказов, вы можете просто написать этот запрос:
count = Order.objects.filter(order_status=1).count()
Если, с другой стороны, вы хотите подсчитать, сколько раз один заказ был отмечен как одобренный (мне непонятно, какой из двух вариантов вы хотите из вопроса), добавьте счетчик в модель и обновите его в вид:
модели.py
class Order(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE, null=True)
pro_name = models.ForeignKey(Product, on_delete=models.CASCADE, null=True,related_name='product')
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True)
order_quantity = models.PositiveIntegerField(null=True)
order_status = models.IntegerField(default=0)
approved_count = models.IntegerField(default=0)
timestamp = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)
просмотры.py
from django.db.models import F
def order_approve(request, order_id):
order = Order.objects.get(id=order_id)
order.order_status = 1
order.approved_count = F('approved_count') + 1
order.save()
return redirect('dashboard-order')
Это может привести к гонке, если несколько человек одновременно утверждают заказы. См. избегая условий гонки, используя F()
.
@AKX Спасибо за интересную заметку, я обновил свой ответ.
Добавлять счетчик всякий раз, когда вызывается
order_approve
?