2016-08-01 9 views
1

Ich schreibe gerade eine Webanwendung in Django für ein Interview.Problem beim Laden von Objekten aus dem Modell in Django

Auf der Homepage suche ich 3 Listen mit verschiedenen Daten.

Dies ist der Fehler, den ich erhalten, wenn die Startseite geladen:

invalid literal for int() with base 10: 'Critical' 

Dies ist models.py:

from django.db import models 
from django.utils import timezone 

class Status(models.Model): 
    status_level=models.CharField(max_length=15) 

    def __str__(self): 
     return self.status_level 


class Event(models.Model): 
    event_status=models.ForeignKey(Status) 
    event_title=models.CharField(max_length=50) 
    event_description=models.CharField(max_length=500) 
    event_flag=models.CharField(max_length=10) 
    date_active=models.DateField(default=timezone.now()) 
    time_active=models.TimeField(default=timezone.now()) 

    def __str__(self): 
     return self.event_title 

Es gibt 3 Statusobjekte derzeit, Kritisch, Mittel und Niedrig.

Views.py:

def index(request): 
    # home page 
    critical_list=Event.objects.filter(event_status='Critical') 
    medium_list=Event.objects.filter(event_status='Medium') 
    low_list=Event.objects.filter(event_status='Low') 

    context_dict={'critical':critical_list, 'medium':medium_list,'low':low_list} 
    return render(request, 'server_status/index.html',context_dict) 

viele Stacktrace Es gibt so werde ich die beiden relevanten Linien posten, die ich glaube, das Problem verursachen:

Der Fehler in dieser Zeile auftritt:

critical_list=Event.objects.filter(event_status='Critical') 

Und dann die letzte Zeile auf dem Stacktrace:

return int(value) ... 
▼ Local vars 
Variable Value 
self  
<django.db.models.fields.AutoField: id> 
value 
'Critical' 

Antwort

4

Da Sie scheinen zu versuchen, auf dem status_level auf dem Status-Modell zu filtern

critical_list=Event.objects.filter(event_status__status_level='Critical') 
+0

Dies ist, was ich gesucht habe! Vielen Dank. Jetzt auf den nächsten Fehler ... – cmackie21

+0

Sie sind herzlich willkommen. Da Sie hier noch neu sind, möchte ich darauf hinweisen, dass die bevorzugte Art, hier "Danke" zu sagen, darin besteht, gute Fragen und hilfreiche Antworten zu wählen (sobald Sie genug Ansehen haben) und die hilfreichste Antwort zu akzeptieren auf jede Frage, die Sie stellen (was auch Ihrem Ruf einen kleinen Schub verleiht). – e4c5

+0

Danke, ich habe nie bemerkt, dass die Antwort-Taste akzeptiert wurde, bevor Sie darauf hingewiesen haben! – cmackie21

Verwandte Themen