Django:从模型中的库存中添加和减去

Django: Add and Subtract from inventory in models

我正在尝试做一些我认为很简单的事情,但事实证明它现在对我来说有点挑战。

我正在尝试在 Django 1.11 和 Python 3.6 中为纸币构建一个简单的 ATM 系统。

我基本上需要跟踪库存纸币以及每种纸币的数量。但我意识到使用我习惯的逻辑我只创建模型的新实例而不是添加到数量字段。

我知道如何使用数量字段添加订单项目(但这也创建了订单的新实例),但我如何才能在不创建新实例的情况下更改库存是吗?

我猜应该和 ManyToManyField 以及 through 参数有关。我也不确定是否应该将每张钞票分开 Class 或将它们全部放在一张 Class.

有什么想法吗?

这是我的模型:

class Cedula(models.Model):
    um          = models.IntegerField(blank=False, default=0)
    dois        = models.IntegerField(blank=False, default=0)
    cinco       = models.IntegerField(blank=False, default=0)
    dez         = models.IntegerField(blank=False, default=0)
    vinte       = models.IntegerField(blank=False, default=0)
    cinquenta   = models.IntegerField(blank=False, default=0)
    cem         = models.IntegerField(blank=False, default=0)

    class Meta:
        verbose_name = "Cédula"
        verbose_name_plural = "Cédulas"

在你的模型中一切看起来都很好。您将只有一行,它会在先创建后更新。

首先创建Cedula对象

from app.models import Cedula
cedula = Cedula()
cdeula.save() # This will instantiate the row with all entries 0.

要进行更新,您必须执行此操作

from app.models import Cedula
from django.db.models import F
cedula = Cedula.objects.all()[0]
cedula.dios = F('dios')+ 2 # Here adding 2 or any number which you want to update with
cedula.vinte = F('vinte') -5 # Here subtracting with 5 or again number which you want to update with
cedula.save()

通常对于那些没有太多相关事情要做或其中没有单个条目的模型,最好在单独的启动脚本中创建它们的对象,并在 运行 之前 运行 创建它们你的服务器。这样数据库就可以填充之前的内容了。