2017-07-11 29 views
0

我試圖做一些我認爲很簡單的事情,但現在對我來說已經證明有點具有挑戰性。Django:在模型中添加和減去庫存

我想在Django 1.11和Python 3.6中爲Banknotes構建一個簡單的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() 

的車型,其並沒有太多關係的事情要做或單個條目在其中最好在一個單獨的啓動腳本中創建它們的對象,並在運行服務器之前運行它們。因此,該數據庫可以在之前填充內容。