2017-02-03 1 views
0

Ich versuche, einen Wert aus zwei benutzerdefinierten Variablen in meiner Detailansicht Vorlage erstellen. Ich habe versucht, Jinja zu verwenden, um Mathe innerhalb des HTML zu tun, aber fand dann, dass der bevorzugte Weg, Variablen innerhalb der apps views.py Datei zu schaffen ist. Ich habe ein paar widersprüchlichen Möglichkeiten hier gefunden, was ich habe zur Zeit:Django Variablen anzeigen

def meter_variables(request): 
    GvData.incoming_meter_daily_total = (GvData.incoming_meter_1_close - GvData.incoming_meter_1_open) 
    + (GvData.incoming_meter_2_close - GvData.incoming_meter_2_close) 

    return render(request, 'geneva/geneva_record.html', 
        {'incoming_meter_daily_total': GvData.incoming_meter_daily_total}) 

in meinem html Ich habe:

<td><input type="number" class="form-control" placeholder="Daily Total" 

value="{{ incoming_meter_daily_total }}"/> 
          </td> 

Es bietet keinen Wert. Ich denke, ich greife falsch auf die Werte vom Modellobjekt zu, aber ich bin mir nicht sicher, wie genau.

Meine Klasse in models.py sehr lang, aber alle Felder sind eine Variation:

class GvData(models.Model): 
    gv_01_open_stock = models.FloatField(default=0) 
    gv_02_open_stock = models.FloatField(default=0) 

Meine Ansichten haben sich mit Klassenansichten erstellt:

class IndexView(generic.ListView): 
    template_name = 'geneva/index.html' 

    def get_queryset(self): 
     return GvData.objects.all() 


class RecordView(generic.DetailView): 
    model = GvData 
    template_name = 'geneva/geneva_record.html' 

Antwort

0

Wenn Sie die Daten senden Von Ihrer Sicht zu der Vorlage, wie sie ist, müssen Sie das "Objekt" nicht in value="{{ object.incoming_meter_daily_total }}"

hinzufügen. Ihrer Meinung nach weisen Sie diesem Schlüssel den Wert zu: incoming_meter_daily_total Das ist also die genaue Variable, die Sie in Ihrer Vorlage

value="{{ incoming_meter_daily_total }}" 

Sie bekommen eine Abfrage von Ihrem Modell festgelegt verwenden müssen. Wenn Sie sich den Code ansehen, versuchen Sie, die Werte direkt aus diesem Abfragesatz abzurufen. Django schlägt automatisch auf Vorlagen fehl, um die ganze Seite nicht zu beschädigen. Greifen Sie auf die Daten eines der Elemente dieses Abfrage-Sets zu (unter Verwendung von [0] oder des gewünschten Werts) oder durchlaufen Sie den Abfrage-Satz.

+0

Ich entfernte das Objekt. aus dem incoming_meter_daily_total. Es liefert immer noch keinen Wert. Der Platzhalterwert wird angezeigt, mein Code oben wurde aktualisiert, um ihn neu zu definieren. –

+0

Greifen Sie auf die Daten in den Modellen wie diesem zu? Wenn das der Fall ist, sehe ich nicht das Objekt, das von der Modellklasse erstellt wurde, und bekomme auch nicht den Datensatzeintrag, der die Daten enthält, mit denen Sie arbeiten möchten. Machst du das an irgendeinem anderen Ort in deinem Ansichtscode? –

+0

Ich habe hinzugefügt, wie meine Ansichten im obigen Code zusammengesetzt sind. Ich weiß, dass ich ein Missverhältnis habe, ich kann es einfach nicht herausfinden. Ich habe versucht, ähnlichen Code der Detailansicht-Funktion ohne Erfolg hinzuzufügen. Vielen Dank für Ihre Zeit, es ist geschätzt. –