2016-11-03 3 views
0

私は私立学校のウェブサイトで働いていますが、魔女は選択したサービスのリストに基づいて合計月額を計算しなければなりません。django adminはインラインモデルのフィールドに値を設定します

私はadmin.pyで3つのモデル

class Eleve(models.Model): 
    ... 

class Tarif(models.Model): 

    eleve = models.OneToOneField(Eleve, on_delete=models.CASCADE) 
    assurance = models.PositiveSmallIntegerField(default="1000") 
    frais = models.PositiveSmallIntegerField(default="750") 
    transport = models.PositiveSmallIntegerField(default="350") 
    garde = models.PositiveSmallIntegerField(default="250") 
    ... 

class Facture(models.Model): 
    month_choices = (
     ('9', 'Septembre'), 
     ('10', 'Octobre'), 
     ... 
    ) 
    eleve = models.ForeignKey(Eleve, on_delete=models.CASCADE) 
    month = models.CharField(max_length=3, choices=month_choices) 
    frais = models.BooleanField(default=True) 
    transport = models.BooleanField() 
    garde = models.BooleanField() 
    total = models.PositiveSmallIntegerField() 
    avance = models.PositiveSmallIntegerField() 
    date = models.DateField(default=datetime.datetime.today) 

Eleve ==学生

を使用しています、モデルがTarifと骨折はそうのようなTabularInlineとして表示されている:

class TarifInline(admin.TabularInline): 
    model = Tarif 
    formset = RequiredInlineFormSet 
    can_delete = False 

class FactureInline(admin.TabularInline): 
    model = Facture 

私必要があります私は交通機関または/およびガードをチェックすると、合計フィールドは、current_eleve.tarif.transportとcuurent_eleve.tarif.gardeの合計で埋める必要があります

フィールドの合計は、いくつかのケースのためにデータベースに格納されなければならない。..

任意のヘルプは、おそらくpre_savesignalを使用するか、saveメソッドをオーバーライドしたいと思うでしょう、サーバー側でそれを行うには

答えて

0

をいただければ幸いですあなたのモデルの

バックエンドWebインターフェイスで行うには、JSスニペット(django.contrib.adminにはbatteries includedが付属)を使用できます。しかし、クライアントからのデータを信用せず、常にサーバー側で重要な値を計算してください。

+0

私はそれをクライアント側でやりたいと思っています。例えば、いくつかのコードを書いてください。 – ppp0h

+0

いいえ、申し訳ありませんが、私は十分なjavascriptで例を与えることができません:( – Art