2017-07-11 3 views
0

私は単純だと思っていたことをしようとしていますが、今は私にとっては少し難しいことが分かりました。Django:モデル内の在庫の追加と引き下げ

私はDjango 1.11とPython 3.6で銀行券用のシンプルなATMシステムを構築しようとしています。

私は基本的に在庫がある紙幣と各種類の紙幣を追跡する必要があります。しかし私は、私が慣れているロジックを使用すると、数量フィールドに追加するのではなく、モデルの新しいインスタンスを作成することに気付きました。

オーダーの項目を追加するために数量欄を使用する方法はわかりましたが(注文の新しいインスタンスを作成することもできます)、新しいインスタンスを作成せずに在庫を変更するにはどうすればよいですか?

私はManyToManyFieldとthrough引数と関係があるはずです。また、各銀行券を1つのクラスとして分けたり、すべてを1つのクラスの下に置いたりするべきかどうかもわかりません。

アイデア?お使いのモデルに

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

すべてが正常に見える:

は、ここに私のモデルです。最初に作成された後に更新される行は1つだけになります。

まずあなたがそれらに行うにはあまり関係のものや、単一のエントリを持っていないモデルのために通常、この

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() 

を実行する必要が更新するためにCedula

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

のオブジェクトを作成しますseprate開始スクリプトでオブジェクトを作成し、サーバーを実行する前にそれらのオブジェクトを実行するのが最善です。そのデータベースが前にコンテンツを入力できるようにします。

関連する問題