当数量低于 django 中的重新订购水平时如何计算项目

How to count items when their quantity is below reorder level in django

我在计算数量低于再订购水平的项目时感到困惑。再订购级别也是项目模型中的一列,我想我需要在过滤器中比较它们在 __lte 中的值,但它不起作用。

Models.py

class Item(models.Model):
    ItemName = models.CharField(max_length=255, blank=True, null=True)
    Quantity = models.IntegerField(null=True, default=1,
        validators=[ 
            MaxValueValidator(100),
            MinValueValidator(0)
        ])
    ModelNum = models.CharField(max_length=255, blank=True, null=True)
    Category = models.ForeignKey(Category,on_delete=models.CASCADE, null=True)
    date_created = models.DateTimeField(auto_now_add=True)
    last_modified = models.DateTimeField(auto_now=True)
    is_draft = models.BooleanField(default=True)
    reorder_level = models.IntegerField(blank=True,  default=10,
        validators=[
            MaxValueValidator(100),
            MinValueValidator(1)
        ])

    class Meta: 
        verbose_name_plural = 'Item'

    def __str__(self):
        return f'{self.ItemName}'

Views.py

def dashboard_inventory(request):
    items_count = Item.objects.all().count()
    reorder_count = Item.objects.filter(Quantity_lte=reorder_level).count()

    context={

        'items_count' : items_count,

    }

    template_name ='inventory-admin/inventory-dashboard.html' 
    return render(request, template_name, context)

您可以使用 F expressions 来比较这两列,如下所示:

from django.db.models import F
Item.objects.filter(Quantity__lte=F('reorder_level')).count()

这将得到所有 ItemQuantity 小于或等于它自己的 reorder_level