Как получить текущее количество товара для каждого товара в системе инвентаризации? - PullRequest
1 голос
/ 10 июля 2019

Я хочу суммировать текущее количество каждого товара в админке django.На странице элемента у каждого элемента есть столбец, и я хочу показать номер в каждом столбце элемента.Это моя модель:

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 ]

1 голос
/ 10 июля 2019
    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 '-'

Спасибо мистеру Даранидхару Редди, это мой последний код. Иногда запасы или запасы могут быть пустыми, поэтому я добавил несколько операторов if.

1 голос
/ 10 июля 2019

Самая простая, но не очень эффективная реализация будет

def item_quantity(self, obj):
        return self.item_ins(obj)-self.item_outs(obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...