首页 > 解决方案 > 如何获取库存系统中每个项目的当前库存数量?

问题描述

我想在 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'

我已经知道如何汇总每个项目的总入库/出库数量,但我不知道如何获取每个项目的当前库存数量(入库减去出库)。

请帮我!谢谢!

标签: djangodjango-models

解决方案


最简单但不是那么有效的实现是

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

推荐阅读