我想在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'
我已经知道如何汇总每件商品的总进货/缺货数量,但是我不知道如何获取每件商品的当前库存量(进货减去抽出)。
请帮助我!谢谢!
答案 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语句。