2016-10-10 7 views
-2

Ich habe eine Liste von Stationen und ich muss Stationen von "Start" anzeigen. Start und Stopp enthalten Stations-IDs. Ich versuche auf diese Weise, aber wenn ich alles renne, bekomme ich eine leere Seite. showtrain.html: -django-wenn Vorlage nicht richtig funktioniert

<table> 
<tr> 
    {% for st in st_list %} 
    {% if st.station_id >= start %} 
    <td> {{ st.station_id }} </td> 
    {% endif %} 
    {% endfor %} 
</tr> 
</table> 

nichts funktioniert innerhalb wenn außer Bedingungen wie {% if Start%}. Ich weiß, dass mir etwas Triviales fehlt. Bitte hilf mir, es herauszufinden. Ich benutze Django 1.6. edit: views.py-

def runtrain(request): 
    if request.method == 'POST': 
     #request.post.get method retrieves user input from a form 
      start = request.POST.get('start', None) 
     stop = request.POST.get('stop', None) 
     rid = request.session.get('route_id') 
     stlist = SequenceTable.objects.filter(route_id = rid) 
     #print start 
     data2 = { 
       "start" : start, 
       "stop" : stop, 
       "st_list" : stlist, 

      } 
    return render(request,"showtrain.html",data2) 

models.py-

class SequenceTable(models.Model): 
     id = models.AutoField(primary_key=True) 
     route_id = models.ForeignKey(route, on_delete=models.CASCADE) 
     station_id = models.ForeignKey(Stations, on_delete=models.CASCADE) 
     sequence_no = models.IntegerField(null=True) 

     #def __str__(self): 
     # return self.sequence_no 
class Stations(models.Model): 
    station_id = models.AutoField(primary_key=True) 
    station = models.CharField(max_length=20) 
    station_code = models.CharField(max_length=10) 
    def __str__(self): 
     return self.station_code 
+3

Haben Sie versucht, die Elemente von 'st_list' zu drucken, um sicherzustellen, dass Sie die Daten korrekt zurückgeben? – rofls

+0

#rofls ja, alle Einträge von st_list werden ausgedruckt, wenn ich die if-Vorlage komplett entferne – user37886

+0

zuerst mache deine 'for' und' if' Logik in Sichten und debugge mit print-Anweisung und überprüfe alle Werte im Terminal mit print. –

Antwort

0

wie RemcoGerlich angegeben liegt das Problem in nicht übereinstimmen Datentyp. Der Wert von start, der vom Formular zurückgegeben wird, ist ein String-Typ und station_id ist ein Integer. Wenn sie nicht miteinander verglichen werden können und daher die Kontrolle nicht eingegeben wird, wenn nichts gedruckt wird