如何获取库存系统中每个物料的当前库存数量?

时间:2019-07-10 08:27:13

标签: django django-models

我想在django admin中总结每个项目的当前库存数量。 在项目页面中,每个项目都有一列,我想在项目的每一列中显示编号。 这是我的模型:

from django.contrib.auth.models import User
from django.db import models


class Item(models.Model):
    item_name = models.CharField(max_length=128)

class In(models.Model):
    in_date = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='ins')
    quantities = models.IntegerField()


class Out(models.Model):
    out_date = models.DateTimeField()
    item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name='outs')
    quantities = models.IntegerField()

Model In表示缺货,Out表示缺货

我在admin.py中编写如下函数:

class ItemAdmin(admin.ModelAdmin):
    list_display = ['item_name', 'pattern', 'vendor', 'item_ins', 'item_outs']

    def item_ins(self, obj):
        return obj.ins.aggregate(Sum('quantities')).get('quantities__sum')
    item_ins.short_description = 'stock-in'

    def item_outs(self, obj):
        return obj.outs.aggregate(Sum('quantities')).get('quantities__sum')
    item_outs.short_description = 'stock-out'

我已经知道如何汇总每件商品的总进货/缺货数量,但是我不知道如何获取每件商品的当前库存量(进货减去抽出)。

请帮助我!谢谢!

2 个答案:

答案 0 :(得分:0)

最简单但不太有效的实现是

def item_quantity(self, obj):
        return self.item_ins(obj)-self.item_outs(obj)

答案 1 :(得分:0)

    def item_quantity(self, obj):
    if not self.item_ins(obj):
        return '-'
    if self.item_outs(obj):
        return self.item_ins(obj) - self.item_outs(obj)
    return '-'

感谢Dharanidhar Reddy先生,这是我的最终代码。 有时进货或售罄可能是空的,所以我添加了一些if语句。