我试图做一些我认为很简单的事情,但事实证明这对我来说有点挑战。
我正在尝试在Django 1.11和Python 3.6中为纸币构建一个简单的ATM系统。
我基本上需要跟踪有库存的钞票和各种钞票。但我意识到使用我习以为常的逻辑,我只创建模型的新实例,而不是添加到数量字段。
我知道如何使用数量字段来添加订单的项目(但这也是创建订单的新实例),但是如何在不创建新实例的情况下对库存进行更改呢?
我想它应该与ManyToManyField和through参数有关。我也不确定是否应将每张纸币分成一个类别,或将它们全部放在一个类别下。
有什么想法吗?
这是我的模特:
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"
答案 0 :(得分:1)
模特中的一切看起来都很好。您将只有一行,它将在首先创建后进行更新。
首先创建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()
通常对于没有太多关系事项或其中的单个条目的模型,最好在单独的启动脚本中创建它们的对象并在运行服务器之前运行它们。这样数据库就可以在之前填充内容。