2016-11-03 2 views
0

Ich arbeite an einer Website für eine Privatschule, in der ich für jeden Monat einen Gesamtpreis basierend auf der Liste der ausgewählten Dienstleistungen berechnen muss.django admin befüllen felder in inlined models

i 3 Modelle

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 == Schüler

in admin.py, die Modelle und Tarif Facture sind Display als TabularInline wie so bin mit:

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

class FactureInline(admin.TabularInline): 
    model = Facture 

, was ich need ist, wenn ich Transport oder/und garde überprüfe, sollte das Gesamtfeld mit der Summe von current_eleve.tarif.transport und cuurent_eleve.tarif.garde

gefüllt werden

das Feld insgesamt muss für einige Fälle ..

jede Hilfe

in der Datenbank gespeichert werden

Antwort

0

Um es auf der Server-Seite zu tun würde geschätzt, dass Sie wahrscheinlich pre_savesignal oder überschreiben die save Methoden anwenden möchten deiner Modelle.

Um dies in der Back-End-Web-Schnittstelle zu tun, könnten Sie einige JS-Snippet verwenden (django.contrib.admin kommt mit batteries included). Aber vertraue niemals den Daten, die von einem Client kommen, und berechne immer die wichtigen Werte auf der Serverseite.

+0

Ich möchte es Client-Seite tun .. könnten Sie einige Code zum Beispiel bitte wright – ppp0h

+0

Nein, tut mir leid, ich bin nicht genug genug mit Javascript, um Beispiele zu geben :( – Art

Verwandte Themen